2012-05-28 94 views
1

我想合併兩個數據框與ID,我想先合併所有匹配的ID,然後發現不匹配,我發現合併它可以合併共同ids.for例如功能:在兩個不同的表中創建新的數據框與兩個不同的表不匹配

m1 = merge(df1, df2, by=c("id")) 

現在我想創建與數據幀2的IDS不匹配的數據幀新的數據框1.

可否請你告訴我該命令我應該找嗎?

例如:

我有以下兩個數據集:

enter image description here DF1 enter image description here DF2

我想從DF2創建ID的新數據框,並非DF1。例如df2中的id =「a3」和「c3」。

enter image description here

我的樣本數據:

df1 =data.frame(id= c("a1","a2","b1","b2","c1","c2"), value= 1:6) 
df2 =data.frame(id= c("a1","a2","a3","b1","c1","c3"), value= 7:12) 

非常感謝,阿燕

回答

5

如果你想使用merge,這裏是做這件事:

df_merged <- merge(df2, df1, by.x="id", by.y="id", all.x=TRUE) 
df_merged[is.na(df_merged$value.y),] 
    id value.x value.y 
3 a3  9  NA 
6 c3  12  NA 

由於您的列名在兩個data.frames ID中entust和merge按常用列名進行合併,您必須明確地告訴函數列名稱要使用,這裏是id

但是你應該問自己,如果你真的想合併在這裏?如果您只想要df2中不在df1中的那些行,爲什麼不使用類似的東西?

df2[!(df2$id %in% df1$id), ] 
    id value 
3 a3  9 
6 c3 12 
+0

非常感謝你,這正是我想要做的。你是對的,合併命令不適合我正在嘗試做的事情,%in%正是我想要學習的東西。再次感謝 :) – Achak