Come calcolare l'offset per gruppo utilizzando dplyr
È possibile utilizzare la seguente sintassi per calcolare i valori spostati di gruppo in R utilizzando il pacchetto dplyr :
df %>%
group_by(var1) %>%
mutate(lag1_value = lag(var2, n= 1 , order_by=var1))
Nota : la funzione mutate() aggiunge una nuova variabile al frame di dati che contiene i valori ritardati.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: calcola i valori spostati per gruppo utilizzando dplyr
Supponiamo di avere il seguente frame di dati in R che mostra le vendite effettuate da due negozi diversi in giorni diversi:
#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
Possiamo utilizzare il seguente codice per creare una nuova colonna che mostri i valori delle vendite ritardate per ciascun negozio:
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
Ecco come interpretare il risultato:
- Il primo valore di lag1_sales è NA perché non esiste un valore precedente per le vendite del negozio A.
- Il secondo valore di lag1_sales è NA perché non esiste un valore precedente per le vendite del negozio B.
- Il terzo valore di lag1_sales è 7 perché è il valore delle vendite precedenti del negozio A.
- Il quarto valore di lag1_sales è 12 perché è il valore delle vendite precedenti del negozio B.
E così via.
Tieni presente che puoi anche modificare il numero di ritardi utilizzati modificando il valore di n nella funzione lag() .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altri calcoli comuni in R:
Come calcolare una somma parziale utilizzando dplyr
Come calcolare la somma per gruppo in R
Come calcolare la media per gruppo in R