假设我有一个数据框,其中每行代表不同的一天。我有一个包含日期的列,以及一个每天感兴趣的值的列。例如,我可能会创建一个这样的数据帧:
DF <-data.frame(日期= C( “9/1”, “9/2”, “9/3”, “9/4”, “9/5”, “9/6”),值= C(2,3,5,8,11,12))
我想创建一个额外的列(为方便起见,名为“avg”),它平均过去3天的值,包括那天。换句话说,我希望上面创建的数据框添加一个看起来大致如下的附加列:
平均
NA
NA
3.33
5.33
8
10.33
我怎么能在R中这样做?如果可能的话,我也希望在7天之前完成此操作,但我认为该代码与此问题的代码非常相似。
解决办法:> library(zoo)
> DF$avg <- c(NA, NA, rollmean(DF$value, 3))
> DF
date value avg
1 9/1 2 NA
2 9/2 3 NA
3 9/3 5 3.333333
4 9/4 8 5.333333
5 9/5 11 8.000000
6 9/6 12 10.333333
你也可以使用fill和align参数
rollmean(DF$value, 3, fill = NA, align = "right")
也可使用 rollmeanr(df$value, 3, fill = NA)