如何计算自下而上的移动平均线

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

有数据框

df
,如何添加
moving_average
变量作为图像?我想自下而上计算,只计算两个数据。

library(tidyverse)
df <- data.frame(value=c(1:10)) 

r moving-average
2个回答
0
投票

尝试

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

0
投票

这是一个带有包的解决方案

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

© www.soinside.com 2019 - 2024. All rights reserved.