我正在尝试计算R中大型数据集的分位数。我的代码目前看起来像这样:
percentile <- numeric(length=5000000)
for (i in 1:5000000){
percentile[i] <- quantile(Result[1:i],0.1)
}
其中Result
是500万观测值的向量。重要的是,基于迄今为止的观测数量来计算分位数,因为我正在测试模拟收敛。目前,此代码需要很长时间才能运行,使其无法使用。有没有更快的方法来实现这一点,使用plyr包中的矢量化或某些功能?我已经尝试了foreach包,虽然速度稍快,但仍需要大量的时间。
谢谢!
答案 0 :(得分:1)
你计算的分位数比相关的多得多。下面的代码应该
percentile <- sapply(
seq(1000, 5000000, by = 1000),
function(i){
quantile(head(Result, i), 0.1)
}
)