R中是否有执行独占完全联接的功能?

时间:2019-01-03 21:47:30

标签: r join outer-join

我正在合并两个具有重叠观察结果的数据框。这些观察值并非在所有列上都重叠,因此它们并不相同,但是在我认为对于链接很重要的列上它们是相同的。如何合并/加入,以排除匹配的观测值?

我熟悉不同的联接函数以及如何使用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))

1 个答案:

答案 0 :(得分:0)

您需要结合两个反连接

 库(dplyr)
bind_rows(
  anti_join(df1,df2),
  anti_join(df2,df1),
)