我有非常大的数据集如下:
myd <- data.frame (id = paste("id_",rep(1:500000, each = 3), sep=""),
yvar= rep(1:500000, each= 3), xvar= rep(1:500000, each= 3))
我想计算ids的平均值。我正在尝试以下它正在很长时间。
myd1 <- aggregate(myd, list(myd$id), mean)
更快做到这一点?
答案 0 :(得分:3)
使用data.table
:
library(data.table)
setDT(myd)
myd[,.(mean(yvar),mean(xvar)),by=(id)]
性能比较如下:
system.time(myd1 <-aggregate(myd[, -1], list(myd$id), mean))
user system elapsed
19.56 0.08 19.72
system.time(mydt1<-mydt[,.(mean(yvar),mean(xvar)),by=(id)])
user system elapsed
0.07 0.00 0.06