R每组移动平均值

Rhu*_*lsb 1 r moving-average

我有一个data.frame ABC_Score.

ABC_Score <- data.frame(Level = c("A", "A", "A", "B", "B", "C", "C", 
"C", "C"), result = c(2, 3, 3, 7, 9, 18, 20, 17, 20))
Run Code Online (Sandbox Code Playgroud)

我需要的是对的移动平均resultLevel.

目前我有以下脚本的移动平均线.

install.packages("TTR")
library(TTR)

`ABC_Score$MA` <- runMean(ABC_Score$result, 2)

      Level result   MA
    1     A      2   NA
    2     A      3  2.5
    3     A      3  3.0
    4     B      7  5.0
    5     B      9  8.0
    6     C     18 13.5
    7     C     20 19.0
    8     C     17 18.5
    9     C     20 18.5
Run Code Online (Sandbox Code Playgroud)

但是在这里我需要指定result计算移动平均线的行数().在该示例中2这是不正确,因为results从不同Levels现在在移动平均混合.

如何均线自动过计算resultLevel

awc*_*olm 5

你可以使用group-bymutate来自dplyr.

library(TTR)
library(dplyr)
ABC_Score <- data.frame(
    Level = c("A", "A", "A", "B", "B", "C", "C", "C", "C"), 
    result = c(2, 3, 3, 7, 9, 18, 20, 17, 20))
ABC_Score %>% group_by(Level) %>% mutate(ra = runMean(result, 2))
# A tibble: 9 x 3
# Groups:   Level [3]
   Level result    ra
  <fctr>  <dbl> <dbl>
1      A      2    NA
2      A      3   2.5
3      A      3   3.0
4      B      7    NA
5      B      9   8.0
6      C     18    NA
7      C     20  19.0
8      C     17  18.5
9      C     20  18.5
Run Code Online (Sandbox Code Playgroud)