Hoe de offset per groep te berekenen met behulp van dplyr
U kunt de volgende syntaxis gebruiken om groep-verschoven waarden in R te berekenen met behulp van het dplyr- pakket:
df %>%
group_by(var1) %>%
mutate(lag1_value = lag(var2, n= 1 , order_by=var1))
Opmerking : de functie mute() voegt een nieuwe variabele toe aan het dataframe dat de vertraagde waarden bevat.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: Bereken verschoven waarden per groep met behulp van dplyr
Stel dat we het volgende gegevensframe in R hebben dat de verkopen weergeeft die door twee verschillende winkels op verschillende dagen zijn gerealiseerd:
#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
We kunnen de volgende code gebruiken om een nieuwe kolom te maken die de vertraagde verkoopwaarden voor elke winkel weergeeft:
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
Zo interpreteert u het resultaat:
- De eerste waarde van lag1_sales is NA omdat er geen eerdere waarde is voor de verkopen van winkel A.
- De tweede waarde van lag1_sales is NA omdat er geen eerdere waarde is voor de verkopen van winkel B.
- De derde waarde van lag1_sales is 7 omdat dit de vorige verkoopwaarde van winkel A is.
- De vierde waarde van lag1_sales is 12 omdat dit de vorige verkoopwaarde van winkel B is.
Enzovoort.
Merk op dat u ook het aantal gebruikte vertragingen kunt wijzigen door de waarde van n in de lag()- functie te wijzigen.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende berekeningen in R kunt uitvoeren:
Hoe u een lopende som kunt berekenen met dplyr
Hoe de som per groep in R te berekenen
Hoe het gemiddelde per groep in R te berekenen