我正在合并两个具有重叠观察结果的数据框。这些观察值并非在所有列上都重叠,因此它们并不相同,但是在我认为对于链接很重要的列上它们是相同的。如何合并/加入,以排除匹配的观测值?
我熟悉不同的联接函数以及如何使用merge()
执行内部联接和外部联接,但是我看不到用于排除将构成内部联接的行的选项。
这是与主题Exclusive Full Join in r类似的问题 但它假定每个数据帧中都有不同的列,这些列在完全连接时会产生NA。如果数据框共享所有相同的列,您将如何做?
我正在使用的解决方法是在完全连接后从头至尾使用duplicated()
删除行。有没有更优雅的方法来获得内部联接的补充?
df_joined <- merge(df1, df2, all = TRUE)
df_joined <- subset(df_joined, !(duplicated(df_joined[
,linking_cols])==TRUE | duplicated(df_joined[ ,linking_cols], fromLast =
TRUE)==TRUE))
答案 0 :(得分:0)
您需要结合两个反连接
库(dplyr)
bind_rows(
anti_join(df1,df2),
anti_join(df2,df1),
)