R:如何计算前 N 行的累积平均值并将结果填充到下一列?

问题描述 投票:0回答:1

我想创建一个新列,计算另一列的前 3 个观测值的累积平均值,并将结果填充到新列的其余部分。例如,假设我的数据框有 10 行,前 3 个观察值的累积平均值为 64,我最好在第 4 行到第 10 行中填写值 64。

希望有一个可以在

dplyr
中执行的解决方案。

library(tidyverse)

set.seed(1)
dat <- data.frame(var1 = round(rnorm(10, 100, 20)))

dat <- dat %>%
  mutate(var1_mean = cummean(head(var1, 3)))
r dplyr
1个回答
0
投票

一种方法:

dat |>
  mutate(var1_mean = if_else(row_number() <= 3, cummean(var1), NA)) |>
  fill(var1_mean)

结果

   var1 var1_mean
1    87  87.00000
2   104  95.50000
3    83  91.33333
4   132  91.33333
5   107  91.33333
6    84  91.33333
7   110  91.33333
8   115  91.33333
9   112  91.33333
10   94  91.33333
© www.soinside.com 2019 - 2024. All rights reserved.