我正在尝试比较 R 中具有不同列和行的两个不同数据帧。 需要获取相同的数据为df3,任何行或列不同的数据为df4。在我的例子中,两个表中的id F、col1和col2是相同的。但其他列不是。
下面是我的数据集的样子:
set.seed(22)
df1 <- data.frame(id=sample(LETTERS, 9, FALSE), col1=sample(0:2, 9, TRUE),
col2 = sample(0:2, 9, TRUE))
df2 <- data.frame(id=sample(LETTERS, 17, FALSE), col1=sample(0:2, 17, TRUE),
col2 = sample(0:2, 17, TRUE),
col6 = sample(0:2, 17, TRUE))
我已经阅读了很多解决方案,但尚未找到简洁的解决方案,有什么建议吗?非常感谢任何帮助。
最佳答案
您可以使用 generics::intersect()
查找共同值,使用 generics::setdiff()
查找不同值。请注意,您需要指定 generics
包才能以您想要的格式获取它。
df3 <- generics::intersect(df1, df2[,1:3])
# id col1 col2
# 1 F 1 0
# 2 K 0 2
df4 <- generics::setdiff(df1, df2[,1:3])
# id col1 col2
#1 I 1 2
#2 X 2 0
#3 J 0 2
#4 L 0 1
#5 Q 1 0
#6 E 1 0
#7 C 1 0
关于r - 尝试比较 R 中具有不同行和列的两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75981688/