r - 如何使用另一列前 3 行的平均值填充新列?在 R

标签 r database dataframe

假设我有一个数据框,其中每一行代表不同的一天。我有一个包含日期的列,以及一个包含每天感兴趣值的列。例如,我可能会像这样创建一个数据框:

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

您还可以使用fillalign 参数

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/

相关文章:

r - 努力在 R 中创建数据透视表

database - Room @Query 注释字符串字段不带引号

r - 在列表中排序数据框

r - 如何创建滞后变量

r - 在R中转换数据帧

java - JPA - 使用包含附加信息的多对多表格

r - 创建不等长的数据帧

python - 从旧数据框创建子列

r - CRAN(或其任何亲属)是否有 API?

mysql - mysql如何向多个表中插入数据