我有两个R data.tables如下:
first
user_id | val
-------------
1 | A
1 | C
2 | A
3 | C
4 | B
1 | B
2 | C
3 | B
1 | D
second
user_id | val
-------------
1 | A
1 | C
4 | B
我想让first
中不在second
内的行像这样:
third
user_id | val
-------------
2 | A
3 | C
1 | B
2 | C
3 | B
1 | D
所以我知道setdiff
函数,我知道我可以合并first[!second,]
,但我不知道如何为多键情况做这个。
答案 0 :(得分:2)
使用on
参数,假设df1
和df2
都是data.table
s:
df1[!df2, on=.(user_id, val)]
# user_id val
#1: 2 A
#2: 3 C
#3: 1 B
#4: 2 C
#5: 3 B
#6: 1 D
答案 1 :(得分:0)
library(dplyr)
third <- first %>%
anti_join(second, by = c("user_id", "val"))