【发布时间】:2023-03-13 14:20:01
【问题描述】:
我正在合并两个有一些重叠观察的数据框。这些观察结果不会在所有列上重叠,因此它们并不相同,但在我认为对链接很重要的列上它们是相同的。如何合并/加入以排除匹配的观察结果?
我熟悉不同的联接函数以及如何使用merge() 执行内部和外部联接,但我没有看到用于排除构成内部联接的行的选项。
这是一个类似的问题,Exclusive Full Join in r 但它假设每个数据帧中有不同的列会在完全连接时产生 NA。如果数据框共享所有相同的列,你会怎么做?
我正在使用的解决方法是使用duplicated() from first 和 last 在完全加入后删除行。有没有更优雅的方法来获取内连接的补码?
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))
【问题讨论】:
-
单个反连接将删除匹配的行,但也会删除第二个数据帧中的任何新行。我想保留两个数据框的所有无与伦比的贡献。
标签: r join outer-join