Как рассчитать отставание по группе с помощью dplyr


Вы можете использовать следующий синтаксис для вычисления запаздывающих значений по группам в R с помощью пакета dplyr :

df %>%
 group_by(var1) %>%
 mutate(lag1_value = lag(var2, n= 1 , order_by=var1))

Примечание.Функция mutate() добавляет в фрейм данных новую переменную, содержащую запаздывающие значения.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: вычисление лаговых значений по группам с помощью dplyr

Предположим, у нас есть следующий фрейм данных в R, который показывает продажи, сделанные двумя разными магазинами в разные дни:

#create data frame
df <- data.frame(store=c('A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'),
 sales=c(7, 12, 10, 9, 9, 11, 18, 23))

#view data frame
df

 store sales
1 A 7
2 B 12
3 A 10
4 B 9
5 A 9
6 B 11
7 A 18
8 B 23

Мы можем использовать следующий код, чтобы создать новый столбец, который показывает запаздывающие значения продаж для каждого магазина:

library(dplyr)

#calculate lagged sales by group
df %>%
 group_by(store) %>%
 mutate(lag1_sales = lag(sales, n= 1 , order_by=store))

# A tibble: 8 x 3
# Groups: store [2]
 store sales lag1_sales
1 A 7 NA
2 B 12 NA
3 A 10 7
4 B 9 12
5 A 9 10
6 B 11 9
7 A 18 9
8 B 23 11

Вот как интерпретировать вывод:

  • Первое значение lag1_sales равно NA , так как для магазина A нет предыдущего значения продаж.
  • Второе значение lag1_sales равно NA , так как для магазина B нет предыдущего значения продаж.
  • Третье значение lag1_sales равно 7 , поскольку это предыдущее значение продаж для магазина А.
  • Четвертое значение lag1_sales равно 12 , поскольку это предыдущее значение продаж для магазина B.

И так далее.

Обратите внимание, что вы также можете изменить количество используемых задержек, изменив значение n в функции lag() .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные вычисления в R:

Как рассчитать совокупную сумму с помощью dplyr
Как рассчитать сумму по группе в R
Как рассчитать среднее значение по группе в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.