【发布时间】:2015-12-21 15:58:20
【问题描述】:
我正在使用的数据表是这样的
require(data.table)
set.seed(2)
dt <- data.table(user=c(rep('a', 3), rep('b', 2), rep('c', 4)),
type=c(sample(LETTERS[1:4], 3),
sample(LETTERS[1:4], 2),
sample(LETTERS[1:4], 4))
)
这是
user type
1: a A
2: a C
3: a B
4: b A
5: b C
6: c D
7: c A
8: c B
9: c C
我只想在A、B 或C 中查找特定类型的用户。在上面的示例中,用户c 不合格,因为他的一个类型记录中有D。所以期望的输出应该是
user type
1: a A
2: a C
3: a B
4: b A
5: b C
我想到的第一种方法显然效率低下,将dt 与split(dt, dt$user) 分开,并检查grepl 和nrow 是否相同,然后是索引和rbindlist。由于我实际使用的数据表有 10989251 行,因此需要一种有效的方法来进行子集化。
【问题讨论】:
标签: r data.table subset