如何按R Data表中的特定列选择组后的行子集

时间:2015-12-11 22:14:04

标签: r data.table

我想根据R数据表中特定列分组后的条件选择行的子集。 以Mtcars数据为例。

dt_mtcars <- as.data.table(mtcars)


dt_mtcars[,.N,by=.(hp)]

    hp  N
 1: 110 3
 2:  93 1
 3: 175 3
 4: 105 1
 5: 245 2
 6:  62 1
 7:  95 1
 8: 123 2
 9: 180 3
10: 205 1
11: 215 1
12: 230 1
13:  66 2
14:  52 1
15:  65 1
16:  97 1
17: 150 2
18:  91 1
19: 113 1
20: 264 1
21: 335 1
22: 109 1
     hp N

现在我想要实现的就是选择基于计数的子数据集,例如在这里我想要在dt_mtcars中获得所有数据,其中N> 1 如果我尝试这样的事情(这在概念上是我想要实现的),它会显示所有行而不是获取N大于1的行。

dt_mtcars[.N>1,.SD,by=.(hp)]

请协助。

2 个答案:

答案 0 :(得分:3)

我们可以使用if

执行此操作
dt_mtcars[, if(.N>1) .SD ,hp]

答案 1 :(得分:2)

您可以分两步完成:

dt_mtcars[,Count:=.N, by=.(hp)][Count>1, .SD, .SDcols = rev(rev(1:length(names(dt_mtcars)))[-1])]

编辑:实现mtcars不只有那两行,更新了SDcols

编辑:已修复以删除计数