用R中其他数据帧中的列数据替换一个数据帧的列数据

时间:2016-08-24 19:33:36

标签: r replace dataframe which

我的数据框df1如下

    A   B
#1  1   3,4
#2  2   5
#3  3   4,1
#4  4   1,3
#5  5   2

我想用下面的数据框DF2

替换ID为A的A和B列号
    ID   DATA
#1  101  data1
#2  503  data2
#3  890  data3
#4  1164  data4
#5  5367  data5

而不是1,2,3 ... DF1应该包含如下数据(预期输出只是替换A,B列中列出的数字和相应的ID)

     A   B
#1  101 890,1164
#2  503 5367
#3  890 1164,101
#4  1164 101,890
#5  5367  503

请让我一个方法来实现这一目标。感谢

1 个答案:

答案 0 :(得分:2)

对于第一栏,它是直截了当的:

df1$A <- df2[df1$A,"ID"]

对于第二列,由于多值列,您必须使用strsplitpaste

df1$B <- sapply(df1$B, function(s) 
    paste( 
       df2[strsplit(as.character(s),",")[[1]],"ID"],
       collapse=","))

df1
     A        B
1  101 890,1164
2  503     5367
3  890 1164,101
4 1164  101,890
5 5367      503