一种高效的方法来获取具有最大值的行,然后将其归为R data.table

时间:2019-07-02 07:58:59

标签: r data.table

说,我有一个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,此过程将花费很长时间。

关于如何使上述效率更高的任何指针-将受到高度赞赏

0 个答案:

没有答案