假设我有一个数据框,其中每一行代表不同的一天。我有一个包含日期的列,以及一个包含每天感兴趣值的列。例如,我可能会像这样创建一个数据框:
df<-data.frame(date=c("9/1","9/2","9/3","9/4","9/5","9/6"),value=c(2,3,5,8,11,12))
我想创建一个额外的列(为方便起见命名为“avg”),用于计算过去 3 天(包括那一天)的平均值。换句话说,我希望上面创建的 data.frame
添加一个大致如下所示的附加列:
avg
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")
或考虑到@H 1 的评论使用rollmeanr(df$value, 3, fill = NA)
关于r - 如何使用另一列前 3 行的平均值填充新列?在 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54895186/