我想计算一些时间序列数据的移动平均值(ma),但我希望 ma 考虑从系列最右边开始的顺序 n,因此我的最后一个 ma 值对应于最后一个 n 的 ma我的系列的值(value)观。所需的函数 rightmost_ma
将产生以下输出:
data <- seq(1,10)
> data
[1] 1 2 3 4 5 6 7 8 9 10
rightmost_ma(data, n=2)
NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
我正在审查不同的可能性,例如包预测,但无法找到如何涵盖此用例。请注意,对我来说,关键要求是为该系列的最后一个元素提供有效的非 NA ma 值,换句话说,我希望我的 ma 能够产生有效的结果,而无需“展望 future ”。
最佳答案
看一下 Zoo 包中的 rollmean
函数
> library(zoo)
> rollmean(zoo(1:10), 2, align ="right", fill=NA)
1 2 3 4 5 6 7 8 9 10
NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
您还可以使用rollapply
> rollapply(zoo(1:10), width=2, FUN=mean, align = "right", fill=NA)
1 2 3 4 5 6 7 8 9 10
NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5
关于r - 计算 "rightmost"移动平均线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444532/