如何在data.table中选择最小pvalue和接近最小值的下一个pvalue

时间:2016-06-14 16:28:16

标签: r data.table

这是一个关于我想要的例子:

set.seed(123)    
data<-data.frame(X=rep(letters[1:3], each=4),Y=sample(1:12,12),Z=sample(1:100, 12))
setDT(data)

我想要做的是选择具有最小Y的唯一X行,并将下一个更接近的值选择为最小值

期望的输出

>data
a 4 68
a 5 11
b 1 4
b 10 89
c 2 64
c 3 82

这篇文章How to select rows by group with the minimum value and containing NAs in R

已经回答了最小值
data[, .SD[which.min(Y)], by=X]

但是如何用最小和更近的方式做到这一点?

1 个答案:

答案 0 :(得分:3)

对于未分组的情况,对于data.table,您可以这样做:

data[rank(Y) %in% 1:2, ]

对于分组案例,您可以执行以下操作:

data[ , .SD[rank(Y) %in% 1:2] , by=X]
   X  Y  Z
1: a  4 68
2: a  5 11
3: b  1  4
4: b 10 89
5: c  3 82
6: c  2 64