热线电话:13121318867

登录
2019-02-27 阅读量: 977
如何使用另一列的前三行的平均值填充新列?

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

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)

0.0000
5
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子