说,我有一个data.table如下
library(data.table)
DT <- data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
现在,我要执行以下操作:
对于每个'x'
组,获取'v'
的最大值,然后返回包含该最大值的行。
为实现这一点,我使用了split()
> do.call(rbind, lapply(split(DT, DT[, 'x']), function(xx) return(xx[which.max(xx[['v']]),])))
x y v
1: a 6 3
2: b 6 6
3: c 6 9
但是对于足够大的DT
,此过程将花费很长时间。
关于如何使上述效率更高的任何指针-将受到高度赞赏