4

オプションを使用せずにデータフレームをサブセット化するより効率的な方法を提案できる人はいSQL/indexing/data.tableますか?

同様の質問を探しましたが、これはインデックス作成オプションを提案しています。

タイミングでサブセット化する方法を次に示します。

#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 

編集: Roland が示唆したように、私はmicrobenchmarkを使用しました。最高のパフォーマンスを発揮するようwhichです。

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)

ここに画像の説明を入力

4

1 に答える 1