Как рассчитать скользящее среднее по группе в r
В анализе временных рядов скользящее среднее представляет собой среднее значение ряда предыдущих периодов.
Вы можете использовать следующий базовый синтаксис для расчета группового скользящего среднего в R:
library (dplyr) library (zoo) #calculate moving average by group df %>% group_by(variable1) mutate(moving_avg = rollmean(variable2, k= 3 , fill=NA, align=' right '))
В этом конкретном примере вычисляется скользящее среднее значение переменной2 за 3 периода, сгруппированное по переменной1 .
Этот код использует функцию group_by() из пакета dplyr и функциюrollmean() из пакета Zoo .
В следующем примере показано, как использовать эту функцию на практике.
Пример: расчет скользящего среднего по группе в R
Предположим, у нас есть следующий кадр данных в R, который показывает продажи продукта в течение последовательных дней в двух разных магазинах:
#create data frame df <- data. frame (store=rep(c(' A ', ' B '), each= 7 ), sales=c(4, 4, 3, 5, 6, 5, 7, 4, 8, 7, 2, 5, 4, 6)) #view data frame df blind sales 1 to 4 2 to 4 3 to 3 4 to 5 5 to 6 6 to 5 7 to 7 8 B 4 9 B 8 10 B 7 11 B 2 12 B 5 13 B 4 14 B 6
Мы можем использовать следующий синтаксис, чтобы создать новый столбец с именем moving_avg3 , который отображает 3-дневное скользящее среднее значение продаж для каждого магазина:
library (dplyr)
library (zoo)
#calculate 3-day moving average of sales, grouped by store
df %>%
group_by(store) %>%
mutate(moving_avg3 = rollmean(sales, k= 3 , fill=NA, align=' right '))
# A tibble: 14 x 3
# Groups: store[2]
store sales moving_avg3
1 A 4 NA
2 A 4 NA
3 to 3 3.67
4 to 5 4
5 to 6 4.67
6 to 5 5.33
7 to 7 6
8 B 4 NA
9 B 8 NA
10 B 7 6.33
11 B 2 5.67
12 B 5 4.67
13 B 4 3.67
14 B 6 5
Примечание . Значение k в функцииrollmean() контролирует количество предыдущих периодов, используемых для расчета скользящего среднего.
В столбце moving_avg3 отображается скользящее среднее значение продаж за предыдущие 3 периода.
Например, скользящее среднее значение продаж за первые 3 дня для магазина А рассчитывается следующим образом:
3-дневная скользящая средняя = (4 + 4 + 3) / 3 = 3,67.
Скользящее среднее значение продаж за следующие 3 дня для магазина А рассчитывается следующим образом:
3-дневная скользящая средняя = (4 + 3 + 5) / 3 = 4
И так далее.
Обратите внимание, что первые два значения скользящего среднего для каждого магазина имеют значение NA , поскольку предыдущих периодов было недостаточно для использования в качестве скользящего среднего.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как построить несколько столбцов в R
Как усреднить по столбцам в R
Как рассчитать среднее значение на группу в R