gpt4 book ai didi

R:循环大型数据集需要很长时间

转载 作者:行者123 更新时间:2023-12-02 02:34:01 24 4
gpt4 key购买 nike

我需要将 R 中的 Mann Kendall 趋势检验应用于大量(大约 100 万)不同大小的时间序列。我创建了一个如下所示的 .txt 文件:

1 2
1 4
1 5
2 4
2 55
3 2
3 4
3 5
3 4
3 55
...

第一列的每个数字都标识一个特定的时间序列。为了获取统计信息,我使用以下代码:

library(Kendall)
a=read.table("to_r.txt")
numData=1017135

for (i in 1:numData){

s1=subset(a,a$V1==i)
m=MannKendall(s1$V2)
cat(m[[1]]," ",m[[2]], " ", m[[3]]," ",m[[4]]," ", m[[5]], "\n" , file="monotonic_trend_checking.txt",append=TRUE)
}

这种方法有效,但问题是计算需要很长时间。时间序列最多有 800 个元素(只有几个,其他较短),所以我认为主要瓶颈在循环中。您能建议一种更快的方法吗?

最佳答案

如果您认为循环是这里的问题,我肯定会看看 data.table。我最近写了一篇博客文章,比较了几种循环方式的性能:

http://www.numbertheory.nl/2011/10/28/comparison-of-ave-ddply-and-data-table/

主要信息是,当唯一 id 的数量(即时间序列的数量)非常大时,data.table 的性能非常好。

关于R:循环大型数据集需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com