我想要计算一种特定类型的减少'时间序列中的总和或衰减值。
例如,假设我有一些简单的数据:
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