對於兩個數據幀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)' –