按时间序列计算运行和/衰减值

时间:2017-07-27 13:04:09

标签: r time-series rollapply

我想要计算一种特定类型的减少'时间序列中的总和或衰减值。

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

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

更新 这个问题或多或少得到了回答: Iterate and sum a calculation across rows by varying row position

0 个答案:

没有答案