我正在尝试将两个数据帧与id合并,我想首先合并所有匹配的ID,然后找到不匹配的,我找到了可以合并公共ID的合并函数。例如:
m1 = merge(df1, df2, by=c("id"))
现在我正在尝试使用与数据帧1不匹配的数据帧2的ID创建新的数据帧。
你能告诉我应该找哪个命令吗?
例如:
我有以下两个数据集:
df1 DF2
我正在尝试使用df2中的ID而不是df1创建一个新的数据帧。例如,df2中的id =“a3”和“c3”。
我的样本数据:
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)
非常感谢,Ayan
答案 0 :(得分:6)
如果您想使用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
相同且merge
按公共列名称合并,因此您必须明确告知函数明确要使用的列名称,id
但你应该问问自己,你真的想在这里合并吗?如果您只想要df2
中不在df1
中的那些行,为什么不使用这样的内容?
df2[!(df2$id %in% df1$id), ]
id value
3 a3 9
6 c3 12