首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >排除一个R data.table中存在于多个键的另一个R key中的行

排除一个R data.table中存在于多个键的另一个R key中的行
EN

Stack Overflow用户
提问于 2018-01-12 06:47:17
回答 2查看 248关注 0票数 0

我有两个R data.tables,像这样:

代码语言:javascript
复制
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中的行,如下所示:

代码语言:javascript
复制
third

user_id | val
-------------
      2 |   A
      3 |   C
      1 |   B
      2 |   C
      3 |   B
      1 |   D

所以我知道setdiff函数,我知道我可以像first[!second,]一样合并,但是我不知道如何处理多键的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-12 07:00:39

使用on参数,假设df1df2都是data.table

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-01-12 06:57:20

代码语言:javascript
复制
library(dplyr)

third <- first %>%
anti_join(second, by = c("user_id", "val"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48217045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档