-2

R に という名前のデータ フレームがarcsあり、名前を変更したい値がいくつかあります。

という別のデータ フレームに基づいて名前を変更したいと思いdata2ます。

data2には 2 つの列があり、最初の列は古い名前で、2 番目の列は新しい名前です。

を通過したいのですが、 の 1 列目にarcsある名前があればの 2 列目に変更したいと思います。arcsdata2data2

それは可能ですか?

たとえば、これが円弧の場合

data 1    blah 1
blah 2    data 2
blah 3    data 3
blah 4    blah 5
data 4    data 5

これはdata2でした

data 1    real 1
data 2    real 2
data 3    real 3
data 4    real 4
data 5    real 5

新しい弧を次のようにしたいと思います。

real 1    blah 1
blah 2    real 2
blah 3    real 3
blah 4    blah 5
real 4    real 5
4

3 に答える 3

0
arcs<-structure(list(col1 = structure(c(4L, 1L, 2L, 3L, 5L), .Label = c("blah 2", 
"blah 3", "blah 4", "data 1", "data 4"), class = "factor"), col2 = structure(c(1L, 
3L, 4L, 2L, 5L), .Label = c("blah 1", "blah 5", "data 2", "data 3", 
"data 5"), class = "factor")), .Names = c("col1", "col2"), class = "data.frame", row.names = c(NA, 
-5L))

> arcs
    col1   col2
1 data 1 blah 1
2 blah 2 data 2
3 blah 3 data 3
4 blah 4 blah 5
5 data 4 data 5

data2<-structure(list(oldname = structure(1:5, .Label = c("data 1", 
"data 2", "data 3", "data 4", "data 5"), class = "factor"), newname = structure(1:5, .Label = c("real 1", 
"real 2", "real 3", "real 4", "real 5"), class = "factor")), .Names = c("oldname", 
"newname"), class = "data.frame", row.names = c(NA, -5L))

 > data2
  oldname newname
1  data 1  real 1
2  data 2  real 2
3  data 3  real 3
4  data 4  real 4
5  data 5  real 5

arcs$col1<-ifelse(as.character(arcs$col1)==as.character(data2$oldname),as.character(data2$newname),as.character(arcs$col1))
> arcs$col1
[1] "real 1" "blah 2" "blah 3" "blah 4" "data 4"

arcs$col2<-ifelse(as.character(arcs$col2)==as.character(data2$oldname),as.character(data2$newname),as.character(arcs$col2))
> arcs$col2
[1] "blah 1" "real 2" "real 3" "blah 5" "real 5"

>arcs
    col1   col2
1 real 1 blah 1
2 blah 2 real 2
3 blah 3 real 3
4 blah 4 blah 5
5 data 4 real 5
于 2013-08-07T00:14:25.797 に答える