这是我想要的示例:
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
最小值在本文中已经回答了如何按最小值选择组,并在r
中包含NASdata[, .SD[which.min(Y)], by=X]
但是如何使用最小值和下一个近距离?
对于未分组的情况,对于数据,您可以做:
: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