Как рассчитать смещение для каждой группы с помощью 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

  blind sales
1 to 7
2 B 12
3 to 10
4 B 9
5 to 9
6 B 11
7 to 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 to 7 NA
2 B 12 NA
3 to 10 7
4 B 9 12
5 to 9 10
6 B 11 9
7 to 18 9
8 B 23 11

Вот как интерпретировать результат:

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

И так далее.

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *