在两个不匹配的表中创建具有匹配ID的新数据帧

Ach*_*hak 1 merge r dataframe

我试图合并两个数据帧与ids,我想先合并所有匹配的ID,然后找到不匹配的,我发现合并函数可以合并公共ids.例如:

m1 = merge(df1, df2, by=c("id"))
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用与数据帧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)
Run Code Online (Sandbox Code Playgroud)

非常感谢,阿燕

Chr*_*h_J 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
Run Code Online (Sandbox Code Playgroud)

由于列名data.frames相同并且merge按公共列名进行合并,因此必须在此处明确告知函数明确要使用的列名id.

但你应该问问自己,你真的想在这里合并吗?如果你只是想要那些df2不在的行df1,为什么不使用这样的东西呢?

df2[!(df2$id %in% df1$id), ]
  id value
3 a3     9
6 c3    12
Run Code Online (Sandbox Code Playgroud)