【发布时间】:2014-09-04 14:48:53
【问题描述】:
关于如何通过因子变量计算数据框中的移动平均值,我还没有找到令人满意的答案。另外,我的问题是整个因子水平是 NA(没有一个国家或个人的数据)和非领先 NA 的情况(缺少最后一次观察)。
考虑:
value <- c(rep(NA,4),1,2,3,NA,5:8)
factor <- c(rep("a",4), rep("b",4),rep("c",4))
Data <- as.data.frame(cbind(value,factor))
我想要 3 个观察值的(右对齐)移动平均值。对这些软件包感到抱歉,但在我看来,这应该与 ddply 函数一起使用:
library(TTR) # for moving averages
library(plyr) # for ddply
Data <- ddply(Data,"factor",MAvalue = SMA(value, n=3))
结果应该是这样的:
value factor MAvalue
NA a NA
NA a NA
NA a NA
NA a NA # this factor has no data
1 b NA
2 b NA
3 b 2
NA b NA # this factor is missing the last observation
5 c NA
6 c NA
7 c 6
8 c 7 # this factor has complete information
任何帮助将不胜感激!
【问题讨论】: