如何在 r 中计算移动平均线(附示例)


在时间序列分析中,移动平均线表示之前多个时期的平均值。

在 R 中计算滚动平均值的最简单方法是使用Zoo包中的rollmean()函数:

 library (dplyr)
library (zoo)

#calculate 3-day rolling average
df %>%
  mutate(rolling_avg = rollmean(values, k= 3 , fill=NA, align=' right '))

此特定示例计算标记为Values的列的3天移动平均值。

下面的例子展示了如何在实际中使用这个功能。

示例:计算 R 中的移动平均值

假设我们在 R 中有以下数据框,显示了产品连续 10 天的销售额:

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 sales=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19))

#view data frame
df

   day sales
1 1 25
2 2 20
3 3 14
4 4 16
5 5 27
6 6 20
7 7 12
8 8 15
9 9 14
10 10 19

我们可以使用以下语法创建一个名为avg_sales3的新列,该列在数据框的每一行中显示前 3 天的移动平均销售值:

 library (dplyr)
library (zoo)

#calculate 3-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '))

   day sales avg_sales3
1 1 25 NA
2 2 20 NA
3 3 14 19.66667
4 4 16 16.66667
5 5 27 19.00000
6 6 20 21.00000
7 7 12 19.66667
8 8 15 15.66667
9 9 14 13.66667
10 10 19 16.00000

注意rollmean()函数中的k值控制用于计算移动平均值的先前周期数。

avg_sales3列显示前 3 个期间的移动平均销售额。

例如,第一个值19.66667计算如下:

3日移动平均线=(25+20+14) /3=19.66667

您还可以通过在mutate()函数中使用多个rollmean()函数一次计算多个移动平均线。

例如,以下代码显示如何计算销售额的 3 天和 4 天移动平均值:

 library (dplyr)
library (zoo)

#calculate 3-day and 4-day rolling average of sales
df %>%
  mutate(avg_sales3 = rollmean(sales, k= 3 , fill=NA, align=' right '),
         avg_sales4 = rollmean(sales, k= 4 , fill=NA, align=' right '))

   day sales avg_sales3 avg_sales4
1 1 25 NA NA
2 2 20 NA NA
3 3 14 19.66667 NA
4 4 16 16.66667 18.75
5 5 27 19.00000 19.25
6 6 20 21.00000 19.25
7 7 12 19.66667 18.75
8 8 15 15.66667 18.50
9 9 14 13.66667 15.25
10 10 19 16.00000 15.00

avg_sales3avg_sales4列分别显示销售额的 3 天和 4 天移动平均值。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中绘制多列
如何在 R 中对列进行平均
如何计算R中每组的平均值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注