2016-08-24 122 views
0
一个数据帧的一列数据

我的数据帧DF1是如下替代与其他数据帧的列数据中的R

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

我想从数据帧下面替换ID的A和B列号DF2

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 

请让我来实现这一点。由于

+0

在哪里呢'409, 1164'从何而来? – HubertL

+0

A,B列数据应替换为DF2中的ID。编辑数据,请检查@HubertL – user2014

+0

好吧,我明白了。也请用890替换809 – HubertL

回答

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 
+0

非常感谢。你能告诉我如何结合df1和df2(现在df2有更多的行数比df1) – user2014

+0

我不明白你的问题@ user2014,df1和df2的行数在过程中不应该改变 – HubertL

+0

我有办法将df1和df2结合起来。但只有第一个数字印在B列,其余的数字显示为NA,NA,NA .....不能想到原因。请建议! @HubertL – user2014

相关问题