1

我正在尝试合并两个带有 id 的数据框,我想先合并所有匹配的 id,然后找到不匹配的,我找到了可以合并常见 id 的合并函数。例如:

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

现在我正在尝试创建一个新的数据帧,其数据帧 2 的 id 与数据帧 1 不匹配。

你能告诉我我应该寻找哪个命令吗?

例如:

我有以下两个数据集:

在此处输入图像描述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)

非常感谢,阿扬

4

1 回答 1

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
于 2012-05-28T12:58:49.117 回答