1

我正在寻找在时间序列中计算特定类型的“递减”总和或衰减值。

例如,假设我有一些简单的数据:

thedata <-  data.frame(magicseeds = c(30,20,10,40,20)
                     ,week = seq(from = 1, to = 5, by = 1))

我想计算“魔法种子”的价值,这样它的影响就会随着时间的推移而递减。例如,假设每个值在下一周都有 20% 的值,所以 magicseeds 列 (30) 中的第一个值将是 30*0.2+6*0.2 等等,直到时间序列结束 (=7.488)。最后一个值 (20) 的计算结果为 0,因为它是时间序列中的最后一个值。

过滤器功能很接近,但是是考虑到总时间序列的累积总和,例如。

thedata$filtervalues <- with(thedata, as.numeric(stats::filter(magicseeds, filter=0.2, method="recursive")))

我也一直在测试 rollapply 功能,但运气不佳。

最终输出将是这样的:

 magicseeds week filtervalues  calculation
1     30    1        7.488     sum(30*.20^1, 30*.20^2, 30*.20^3, 30*.20^4)
2     20    2        4.96      sum(20*.20^1, 20*.20^2, 20*.20^3)
3     10    3        2.4       sum(10*.20^1, 10*.20^2)
4     40    4        8.000     sum(40*.20^1)
5     20    5        0.000

更新: 这里或多或少地回答了这个问题: 通过改变行位置迭代和计算跨行的计算

4

0 回答 0