R:返回id,其中没有行匹配条件的条目

时间:2015-02-23 00:07:19

标签: r

这似乎是一个相当简单的操作,但我无法弄清楚如何操作或搜索它。

我的数据类似于以下内容:

id,status
123,0
123,1
124,1
125,1
125,2
126,0
126,2

我想要一个不具有状态为2的行的ID列表。因此在上面的示例中,操作将返回:

123
124

我相信在sql中它可能是这样的:

SELECT DISTINCT id
FROM user
WHERE id NOT IN (
SELECT DISTINCT id
FROM user
WHERE status='2')
)

但我不确定如何在R中这样做。

1 个答案:

答案 0 :(得分:2)

如果你把它放入data.table:

require(data.table)
mydt <- data.table(user)

然后语法如下:

mydt[
  ,
  list(keep=all(status!=2)),
by=id][
  (keep),
  id
]

FROM[WHERE,SELECT,BY][WHERE2,SELECT2,BY2]...[WHEREK,SELECTK,BYK]。在每组括号之后,您有一个新的data.table用于链中的下一个查询。

安装data.table软件包后,可以键入vignette("datatable-faq")并浏览到问题2.16,以获取有关SQL语法与data.table中可用内容之间类比的详细信息。