【发布时间】:2020-05-29 20:09:01
【问题描述】:
假设我有以下动物园对象:
x.orig <- read.zoo(data.frame(date=seq(as.Date('2020-01-01'), as.Date('2020-01-10'), 1), v=c(1,2,3,100,4,5,1000,8,8,10)))
2020-01-01 2020-01-02 2020-01-03 2020-01-04 2020-01-05 2020-01-06 2020-01-07 2020-01-08 2020-01-09 2020-01-10
1 2 3 100 4 5 1000 8 8 10
我想计算width=seq_along(x.orig) 的滚动总和,如下所示:
2020-01-01 1
2020-01-02 1 + 2 #2020-01-01 + 2020-01-02
2020-01-03 1 + (1 + 2) + 3 #2020-01-01 + 2020-01-02 + 2020-01-03
2010-01-04 1 + (1 + 2) + (1 + (1 + 2) + 3) + 100 #2020-01-01 + 2020-01-02 + 2020-01-03 + 2020-01-04
...
我想这样做的方法是以某种方式输入结果 x,以便在每个 rollapply 循环之后更新 x,以便下一次 rollapply 迭代在其窗口中获取修改后的值,但我只是不确定如何来写吧……
【问题讨论】:
-
使用基础 R. cumsum(cumsum(x)) 可能会更容易,而且会更麻烦
-
实际上我有一周的滚动窗口,所以这就是 cumsum 不起作用的原因,但是是的,我认为它必须有点像 cumsum
-
也许创建一个函数(x){cumsum(cumsum(x))} 然后滚动一周