Gegevens groeperen op tijd in r (met voorbeeld)
U kunt de volgende syntaxis gebruiken om gegevens op tijd te groeperen en aggregatie uit te voeren in R:
library (dplyr) library (lubridate) #group by hours in time column and calculate sum of sales df %>% group_by(time=floor_date(time, ' 1 hour ')) %>% summarize(sum_sales=sum(sales))
In dit specifieke voorbeeld worden de waarden per uur gegroepeerd in een kolom met de naam Uur en wordt vervolgens voor elk uur de som van de waarden in de kolom Verkoop berekend.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: groepeer gegevens op tijd in R
Laten we zeggen dat we het volgende gegevensframe hebben dat het aantal verkopen toont dat op verschillende tijdstippen van de dag voor een winkel is gedaan:
#create data frame
df <- data. frame (time=as. POSIXct (c('2022-01-01 01:14:00', '2022-01-01 01:24:15',
'2022-01-01 02:52:19', '2022-01-01 02:54:00',
'2022-01-01 04:05:10', '2022-01-01 05:35:09')),
sales=c(18, 20, 15, 14, 10, 9))
#view data frame
df
time sales
1 2022-01-01 01:14:00 18
2 2022-01-01 01:24:15 20
3 2022-01-01 02:52:19 15
4 2022-01-01 02:54:00 14
5 2022-01-01 04:05:10 10
6 2022-01-01 05:35:09 9
We kunnen de volgende syntaxis gebruiken om de tijdkolom op uren te groeperen en de som van de verkopen voor elk uur te berekenen:
library (dplyr) library (lubridate) #group by hours in time column and calculate sum of sales df %>% group_by(time=floor_date(time, ' 1 hour ')) %>% summarize(sum_sales=sum(sales)) `summarise()` ungrouping output (override with `.groups` argument) # A tibble: 4 x 2 time sum_sales 1 2022-01-01 01:00:00 38 2 2022-01-01 02:00:00 29 3 2022-01-01 04:00:00 10 4 2022-01-01 05:00:00 9
Uit het resultaat kunnen we zien:
- In totaal werden er in het eerste uur 38 verkopen gedaan.
- In het tweede uur werden in totaal 29 verkopen gedaan.
- In het vierde uur werden in totaal 10 verkopen gedaan.
- In totaal werden er tijdens het vijfde uur 9 verkopen gedaan.
Merk op dat we ook een andere aggregatie kunnen uitvoeren.
We kunnen bijvoorbeeld het gemiddelde aantal verkopen per uur berekenen:
library (dplyr) library (lubridate) #group by hours in time column and calculate mean of sales df %>% group_by(time=floor_date(time, ' 1 hour ')) %>% summarize(mean_sales=mean(sales)) `summarise()` ungrouping output (override with `.groups` argument) # A tibble: 4 x 2 time mean_sales 1 2022-01-01 01:00:00 19 2 2022-01-01 02:00:00 14.5 3 2022-01-01 04:00:00 10 4 2022-01-01 05:00:00 9
Uit het resultaat kunnen we zien:
- De gemiddelde omzet in het eerste uur was 19 .
- De gemiddelde omzet in het tweede uur was 14,5 .
- De gemiddelde omzet in het vierde uur was 10 .
- De gemiddelde omzet in het vijfde uur was 9 .
Voel je vrij om je eigen dataframe op tijd te groeperen en elke gewenste specifieke metriek te berekenen door de metriek in de summary()- functie te wijzigen.
Aanvullende bronnen
In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in R uitvoert:
Hoe gegevens per maand te groeperen in R
Hoe gegevens per week te groeperen in R