【发布时间】:2019-07-25 07:44:24
【问题描述】:
我有一个包含 8 个关键数据变量的大型时间序列数据集。我基本上是在寻找前一年的相同数据并创建一个累积总和。
我有一个可以运行的代码,但是速度非常慢,有没有更有效的方法
我当前的代码运行速度很慢:
编辑:我的代码无法重现。我对此感到抱歉。经过比我现在应该感到自豪的更多的努力。
源数据
Data <- data.frame(
V1 = rep(1:50, 25*3*20),
V2 = rep(1:25, each= 50, 3*20),
V3 = rep(1:3, each=50*25, 20),
Year = rep(1:20, each=50*25*3),
YearTotal = rnorm(75000),
CumulativeSum = 0)
工作但非常慢的代码
for (i in 1:75000){
Data$CumulativeSum[i] <- Data$YearTotal[i] +
ifelse(Data$Year[i] == 1, 0,
Data$CumulativeSum[
Data$V1 == Data$V1[i] &
Data$V2 == Data$V2[i] &
Data$V3 == Data$V3[i] &
Data$Year + 1 == Data$Year[i] ])
}
我的实际代码要长一些,并且有字符和周期变量,我需要 30 多分钟来计算。我在 StackOverflow 上找不到任何类似的问题 - 也许我不知道要搜索什么。我不禁相信一定有更优雅、更快捷的方式来完成它。
【问题讨论】:
-
您能否提供一个可重现的示例?参见例如here
-
我将添加可重现的数据。对不起!
标签: r time-series lookup cumulative-sum