我有两个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,]一样合并,但是我不知道如何处理多键的情况。
发布于 2018-01-12 07:00:39
使用on参数,假设df1和df2都是data.table:
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发布于 2018-01-12 06:57:20
library(dplyr)
third <- first %>%
anti_join(second, by = c("user_id", "val"))https://stackoverflow.com/questions/48217045
复制相似问题