Jak obliczyć przesunięcie na grupę za pomocą dplyr
Do obliczenia wartości przesuniętych w grupie w R przy użyciu pakietu dplyr możesz użyć poniższej składni:
df %>%
group_by(var1) %>%
mutate(lag1_value = lag(var2, n= 1 , order_by=var1))
Uwaga : Funkcja mutate() dodaje nową zmienną do ramki danych zawierającej opóźnione wartości.
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Oblicz przesunięte wartości według grupy za pomocą dplyr
Załóżmy, że mamy następującą ramkę danych w R, która pokazuje sprzedaż dokonaną przez dwa różne sklepy w różnych dniach:
#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
Możemy użyć poniższego kodu, aby utworzyć nową kolumnę wyświetlającą opóźnione wartości sprzedaży dla każdego sklepu:
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
Oto jak zinterpretować wynik:
- Pierwsza wartość lag1_sales to NA , ponieważ nie ma poprzedniej wartości sprzedaży w sklepie A.
- Druga wartość lag1_sales to NA , ponieważ nie ma poprzedniej wartości sprzedaży w sklepie B.
- Trzecia wartość lag1_sales wynosi 7 , ponieważ jest to poprzednia wartość sprzedaży sklepu A.
- Czwarta wartość lag1_sales wynosi 12 , ponieważ jest to poprzednia wartość sprzedaży sklepu B.
I tak dalej.
Pamiętaj, że możesz także zmienić liczbę używanych opóźnień, zmieniając wartość n w funkcji lag() .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe obliczenia w R:
Jak obliczyć sumę bieżącą za pomocą dplyr
Jak obliczyć sumę według grupy w R
Jak obliczyć średnią na grupę w R