Як розрахувати зсув на групу за допомогою 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_sales — NA , тому що немає попереднього значення для продажів магазину A.
- Друге значення lag1_sales — NA , тому що немає попереднього значення для продажів магазину B.
- Третє значення lag1_sales дорівнює 7 , оскільки це попереднє значення продажів магазину A.
- Четверте значення lag1_sales дорівнює 12 , оскільки це попереднє значення продажів магазину B.
І так далі.
Зауважте, що ви також можете змінити кількість використовуваних затримок, змінивши значення n у функції lag() .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші поширені обчислення в R:
Як обчислити поточну суму за допомогою dplyr
Як обчислити суму за групою в R
Як обчислити середнє значення на групу в R