同一列中多个项目的 SMA

SMA for multiple items in the same column

我正在尝试为同一列中的多个项目创建 SMA 公式。这是我正在处理的数据示例。

 Person  Time Value
   <chr>  <dbl> <dbl>
 1 A          1    14
 2 A          2    13
 3 A          3    17
 4 A          4     9
 5 A          5    20
 6 A          6     5
 7 B          1    17
 8 B          2    11
 9 B          3    18
10 B          4    10
11 B          5    10
12 B          6    20
13 C          1     5
14 C          2     5
15 C          3    11
16 C          4    12
17 C          5    12
18 C          6     9

我希望能够为每个人(A、B、C 等)创建另一个包含 SMA 公式的列。在这种情况下,让我们说 SMA2。虽然它适用于 A 人,但我无法让公式在 B 人身上重新启动。而是 B 人的第一个 SMA2 值包含 A 人的值。

现在我已经使用了它,它确实给了我想要的 SMA,只是没有在每个新人身上重新启动:

DataSet$SMA2<-SMA(DataSet$Value, 2)

如有任何帮助,我们将不胜感激。

DataSet <- DataSet %>%
  group_by(Person) %>%
  mutate(sma2 = TTR::SMA(Value,2))

还是想到了这个:

# A tibble: 18 x 4
# Groups:   Person [3]
   Person  Time Value  sma2
   <chr>  <dbl> <dbl> <dbl>
 1 A          1    14  NA  
 2 A          2    13  13.5
 3 A          3    17  15  
 4 A          4     9  13  
 5 A          5    20  14.5
 6 A          6     5  12.5
 7 B          1    17  11  
 8 B          2    11  14  
 9 B          3    18  14.5
10 B          4    10  14  
11 B          5    10  10  
12 B          6    20  15  
13 C          1     5  12.5
14 C          2     5   5  
15 C          3    11   8  
16 C          4    12  11.5
17 C          5    12  12  
18 C          6     9  10.5

使用 dplyr,group_by 人然后使用 mutate。这将重置每个人的计算。

DataSet <- DataSet %>% 
  group_by(Person) %>% 
  mutate(sma2 = TTR::SMA(Value, 2))

# A tibble: 18 x 4
# Groups:   Person [3]
   Person  Time Value  sma2
   <chr>  <int> <int> <dbl>
 1 A          1    14  NA  
 2 A          2    13  13.5
 3 A          3    17  15  
 4 A          4     9  13  
 5 A          5    20  14.5
 6 A          6     5  12.5
 7 B          1    17  NA  
 8 B          2    11  14  
 9 B          3    18  14.5
10 B          4    10  14  
11 B          5    10  10  
12 B          6    20  15  
13 C          1     5  NA  
14 C          2     5   5  
15 C          3    11   8  
16 C          4    12  11.5
17 C          5    12  12  
18 C          6     9  10.5