这似乎是一个相当简单的操作,但我无法弄清楚如何操作或搜索它。
我的数据类似于以下内容:
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中这样做。
答案 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中可用内容之间类比的详细信息。