我有一个带有单列(col1)的df
df <- data.frame(col1 = c(96, 56, 53, 63, 70, 65, 72,
111, 65, 58, 59, 74, 57, 70,
89, 60, 60, 52, 65, 58, 84,
54, 55, 51, 72))
我想一次取7个值的平均值,并一次向下移动一个值,得到如下表格。因此week_avg
中的每个值都是col1
col1 week_avg
96
56
53
63
70
65
72 68
111 70
65 71
58 72
59 72
74 72
57 71
70 71
89 67
60 67
60 67
52 66
65 65
58 65
84 67
54 62
55 61
51 60
72 63
答案 0 :(得分:2)
使用zoo和dplyr:
library(dplyr)
library(zoo)
df <- df %>% mutate(moving_average = round(rollmeanr(col1, 7, fill = NA)))
> df
col1 moving_average
1 96 NA
2 56 NA
3 53 NA
4 63 NA
5 70 NA
6 65 NA
7 72 68
8 111 70
9 65 71
10 58 72
11 59 71
12 74 72
13 57 71
14 70 71
15 89 67
16 60 67
17 60 67
18 52 66
19 65 65
20 58 65
21 84 67
22 54 62
23 55 61
24 51 60
25 72 63