当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 分组数据帧的最有效方法

来源:互联网 收集:自由互联 发布时间:2021-06-22
任何人都可以建议更有效的方法来分组数据帧而不使用SQL / indexing / data.table选项吗? 我寻找类似的问题,this one建议索引选项. 以下是定时子集的方法. #Dummy datadat - data.frame(x = runif(10000
任何人都可以建议更有效的方法来分组数据帧而不使用SQL / indexing / data.table选项吗?

我寻找类似的问题,this one建议索引选项.

以下是定时子集的方法.

#Dummy data
dat <- data.frame(x = runif(1000000, 1, 1000), y=runif(1000000, 1, 1000))

#Subset and time
system.time(x <- dat[dat$x > 500, ])
#   user  system elapsed 
#  0.092   0.000   0.090 
system.time(x <- dat[which(dat$x > 500), ])
#   user  system elapsed 
#  0.040   0.032   0.070 
system.time(x <- subset(dat, x > 500))
#   user  system elapsed 
#  0.108   0.004   0.109

编辑:
正如罗兰建议我使用microbenchmark.它似乎表现最佳.

library("ggplot2")
library("microbenchmark")

#Dummy data
dat <- data.frame(x = runif(1000000, 1, 1000), y=runif(1000000, 1, 1000))

#Benchmark
res <- microbenchmark( dat[dat$x > 500, ],
                       dat[which(dat$x > 500), ],
                       subset(dat, x > 500))
#plot
autoplot.microbenchmark(res)
正如罗兰建议我使用microbenchmark.似乎哪个表现最好.

library("ggplot2")
library("microbenchmark")

#Dummy data
dat <- data.frame(x = runif(1000000, 1, 1000), y=runif(1000000, 1, 1000))

#Benchmark
res <- microbenchmark( dat[dat$x > 500, ],
                       dat[which(dat$x > 500), ],
                       subset(dat, x > 500))
#plot
autoplot.microbenchmark(res)
网友评论