对于两个数据帧df.1
和df.2
,我想知道df.1
中不在df.2
的行,即已消失或更改的行。 这里是例子:setdiff of row in R
df.1 = cbind.data.frame(a = 1:4, b = 2:5, c = 99:102)
> df.1
a b c
1 1 2 99
2 2 3 100
3 3 4 101
4 4 5 102
df.2 = cbind.data.frame(a = c(1:3,7), b = c(3,3:4,9), c=c(99:100, 102, 105))
> df.2
a b c
1 1 3 99
2 2 3 100
3 3 4 102
4 7 9 105
所以在这里我需要的输出是行1,3和4 df.1
:
> desired.output
a b c
1 1 2 99
3 3 4 101
4 4 5 102
如果df.1
和df.2
是矢量我可以用setdiff(df.1, df.2)
但我不看到一个简单/优雅的方式将其应用于数据框。
有什么比这些解决方法我认为是更优雅:
- 比较柱
df.1
和df.2
列,然后采取联合的所有列 - 使得dataframes他们的所有行的列表,然后使用
setdiff
并转换回数据帧
我觉得这是一个重大的欺骗。 Usualy最受欢迎的答案是'library(dplyr); anti_join(df.1,df.2)' –