在“ a”列中查找两个不同数据集的“ b”列中具有不同值的值

时间:2019-09-29 20:15:18

标签: r

数据包含多列和3000行

OrderNo相同,Ordertype不同。

我想获得两个数据帧中所有OrderNo不同的Ordertype

我已将两个数据帧中的两列隔离开来,并将它们设置为升序。然后,我尝试使用函数cbind合并两列,并在其中一列中找到缺失的值。

xxx <- data.frame( orderNo = c(1:10), Ordertype = c("a", "b", "c", "d", "a", "b", "c", "d", "e", "f"))
yyy <- data.frame( orderNo = c(1:10), Ordertype = c("a", "b", "c", "d", "a", "b", "e", "d", "e", "f"))

在上面的示例中:OrderNo“ 7”对应一个数据帧中的“ c”,而另一数据帧中的“ e”。我希望将Ordertype列中所有这些数字都具有不同值的集合作为输出。

1 个答案:

答案 0 :(得分:0)

听起来您想要一个包含两个数据帧之间差异的数据帧,并由orderNo匹配(包括)。正确吗?

一种可能性是:

res <- merge(xxx, yyy, by = "orderNo")
res[res[,2] != res[,3], ]

  orderNo Ordertype.x Ordertype.y
7       7           c           e

使用dplyranti_join,您可以执行以下操作找到不同之处:

library(dplyr)
inner_join(anti_join(xxx, yyy), anti_join(yyy, xxx), by='orderNo')

  orderNo Ordertype.x Ordertype.y
1       7           c           e