有数据框
df
,如何添加moving_average
变量作为图像?我想自下而上计算,只计算两个数据。
library(tidyverse)
df <- data.frame(value=c(1:10))
尝试
ave
,如下所示
transform(
df,
moving_average = ave(value,
ceiling(seq_along(value) / 2),
FUN = \(x) c(NA, mean(x))[seq_along(x)]
)
)
这给出了
value moving_average
1 1 NA
2 2 1.5
3 3 NA
4 4 3.5
5 5 NA
6 6 5.5
7 7 NA
8 8 7.5
9 9 NA
10 10 9.5
这是一个带有包的解决方案
zoo
。
df <- data.frame(value=0:10)
df$moving_average <- zoo::rollmeanr(df$value, k = 2L, fill = NA)
is.na(df$moving_average) <- (seq_along(df$value) - 1L) %% 2L == 1L
df
#> value moving_average
#> 1 0 NA
#> 2 1 NA
#> 3 2 1.5
#> 4 3 NA
#> 5 4 3.5
#> 6 5 NA
#> 7 6 5.5
#> 8 7 NA
#> 9 8 7.5
#> 10 9 NA
#> 11 10 9.5
创建于 2023-08-10,使用 reprex v2.0.2