How to perform Rolling Average in R
How to perform Rolling Average in R, A rolling average in time series analysis represents the average value over a predetermined number of prior periods.
Using the rollmean() function from the zoo package in R is the simplest approach to compute a rolling average:
library(dplyr) library(zoo)
Calculate the 3-day rolling average
df %>% mutate(rolling_avg = rollmean(values, k=3, fill=NA, align='right'))
For the column labeled values, this particular example computes a 3-day rolling average.
How to use this function is explained in the example that follows.
How to perform Rolling Average in R
Let’s say we have the following R data frame, which displays sales of a certain product over a period of 10 days:
Let’s create a data frame
df <- data.frame(day=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), sales=c(215, 120, 114, 116, 217, 120, 112, 115, 114, 191))
df day sales 1 1 215 2 2 120 3 3 114 4 4 116 5 5 217 6 6 120 7 7 112 8 8 115 9 9 114 10 10 191
For each row of the data frame, we can add a new column called avg_sales3 that shows the rolling average of sales for the preceding three days:
library(dplyr) library(zoo)
Now 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 215 NA 2 2 120 NA 3 3 114 149.6667 4 4 116 116.6667 5 5 217 149.0000 6 6 120 151.0000 7 7 112 149.6667 8 8 115 115.6667 9 9 114 113.6667 10 10 191 140.0000
The quantity of prior periods used to generate the rolling average is controlled by the value of the k parameter in the rollmean() function.
The rolling average of the sales figure for the preceding three periods is displayed in the avg_sales3 column.
For instance, the first result of 149.6667 is determined as follows:
3-Day Moving Average is equal to 149.6667 (215 + 120 + 114) / 3.
The modify() function’s multiple rollmean() capabilities can be used to perform numerous rolling average calculations simultaneously.
The code below, for instance, demonstrates how to compute the 3-day and 4-day moving averages of sales: