-1

我有两个数据框要比较。数据帧的截图如下所示

数据 1

在此处输入图像描述

我要检查三件事:

  1. 第一次检查:数据 1 中存在但数据 2 中不存在的项目 [Item4; 子项4;子项1]
  2. 2nd Check:数据 1 中不存在但数据 2 中存在的项目 [Item6; 子项1;子项1]
  3. 第三次检查:两个列表中都存在的项目,但值已更改 [Item2; 子项5;子项1]

我使用 anti_join() 轻松完成了第一次和第二次检查

MissingfromData2 <- anti_join(Data1,Data2, by = c("Property.1","Property.2","Property.3"))
MissingfromData1 <- anti_join(Data2,Data1, by = c("Property.1","Property.2","Property.3"))

但是,对于第 3 次检查,我似乎无法锁定by=c("Property.1","Property.2","Property3")

当我执行以下操作时

changedValue1 <- setdiff(Data1,Data2, by = c("Property.1","Property.2","Property.3")) 

设置差异1

changedValue2 <- setdiff(Data2,Data1, by = c("Property.1","Property.2","Property.3"))

设置差异2

我得到了不需要的附加行(来自检查 1 和检查 2)。

如何仅获取更改值的结果?

4

1 回答 1

0

我找到了问题的解决方案。我需要在上面的代码中添加以下代码

Result <- setdiff(changedValue2,MissingfromData1, by = c("Property.1","Property.2","Property.3"))

它呈现了 changedValue2 中缺少的唯一行 MissingfromData1 在值列中具有所需的差异。

于 2020-09-16T10:09:53.493 回答