过滤组data.table的值

时间:2018-06-06 19:08:53

标签: r data.table subset

我希望过滤data.table组的最大值。

DT <- data.table(V1 = c(1L, 2L),
                 V2 = LETTERS[1:3],
                 V3 = round(rnorm(4), 4),
                 V4 = 1:12)

 V1 V2     V3     V4
 1:  1  A -0.1346  1
 2:  2  A  0.2309  4
 3:  1  A  0.7067  7
 4:  2  A -1.0082 10
 5:  2  B -1.0082  2
 6:  1  B -0.1346  5
 7:  2  B  0.2309  8
 8:  1  B  0.7067 11
 9:  1  C  0.7067  3
10:  2  C -1.0082  6
11:  1  C -0.1346  9
12:  2  C  0.2309 12

我试过这个但没有骰子:

DT[,max(V3), by =.(V2)]

   V2     V1
1:  A 1.2281
2:  B 1.2281
3:  C 1.2281

没有循环,我该如何处理?我更喜欢data.table方法。

1 个答案:

答案 0 :(得分:0)

我们可以创建一个行索引来对数据集进行子集化

DT[DT[, .I[V3 == max(V3)], by = V2]$V1]

如果每个&#39; V2&#39;

只有一个最大元素
DT[, .I[which.max(V3)], by = V2]$V1]