微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得每n个值的移动平均值

如何解决如何获得每n个值的移动平均值

我有一个这样的数据框

date <- c("2020-09-01","2020-09-01","2020-09-02","2020-09-03","2020-09-04","2020-09-04")
group <- c("red","green","yellow","red","yellow")
number <- c(1,2,3,4,5,6,7,8,9,10,11,12)
df <- data.frame(date,group,number)

我想按“分组”分组,并有一个新列称为“移动平均值”,即第一和第二值的平均值,然后是第二和第三值的平均值,然后是第三和第四值的平均值等等。然后是另一个称为“ stdev”的新列,它是前两个移动平均值的标准偏差。 (在我的真实单词示例中,我需要有自由度,不仅可以平均连续的2个值,还可以平均30个)

我希望输出是这样的:

enter image description here

非常感谢您的提前帮助!

解决方法

dplyr方法,假设您的数据已经按日期排列:

df %>%
  group_by(group) %>%
  mutate(
    `moving average` = (number + lag(number)) / 2,stdev = abs(`moving average` - lag(`moving average`))/sqrt(2)
  )

存在基本的方法,但涉及更多。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。