2016-08-24 62 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

相關問題