快速计算大数据集的均值

时间:2017-04-11 14:28:39

标签: r performance aggregate mean

我有非常大的数据集如下:

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)

更快做到这一点?

1 个答案:

答案 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