Hoe u dagelijkse gegevens kunt samenvoegen tot maandelijkse en jaarlijkse gegevens in r
Soms wilt u misschien dagelijkse gegevens samenvoegen tot wekelijkse, maandelijkse of jaarlijkse gegevens in R.
In deze tutorial wordt uitgelegd hoe u dit eenvoudig kunt doen met behulp van de pakketten lubridate en dplyr .
Voorbeeld: Verzamel dagelijkse gegevens in R
Stel dat we het volgende gegevensframe in R hebben dat de dagelijkse verkoop van een artikel over een periode van 100 opeenvolgende dagen weergeeft:
#make this example reproducible set.seed(1) #create data frame df <- data.frame(date = as.Date (" 2020-12-01 ") + 0:99, sales = runif (100, 20, 50)) #view first six rows head(df) dirty date 1 2020-12-01 27.96526 2 2020-12-02 31.16372 3 2020-12-03 37.18560 4 2020-12-04 47.24623 5 2020-12-05 26.05046 6 2020-12-06 46.95169
Om deze gegevens samen te voegen, kunnen we de functie floor_date() van het lubridate- pakket gebruiken, dat de volgende syntaxis gebruikt:
floor_date (x, unit)
Goud:
- x: een vector van datumobjecten.
- eenheid: tijdseenheid waarop moet worden afgerond. Opties zijn onder meer seconden, minuten, uren, dagen, weken, maanden, tweemaandelijks, kwartalen, halfjaren en jaren.
De volgende codefragmenten laten zien hoe u deze functie kunt gebruiken met de functies group_by() en summary() in het dplyr- pakket om de gemiddelde omzet per week, maand en jaar te vinden:
Gemiddelde omzet per week
library (lubridate)
library (dplyr)
#round dates down to week
df$week <- floor_date (df$date, " week ")
#find average sales per week
df %>%
group_by (week) %>%
summarize (mean = mean (sales))
# A tibble: 15 x 2
week means
1 2020-11-29 33.9
2 2020-12-06 35.3
3 2020-12-13 39.0
4 2020-12-20 34.4
5 2020-12-27 33.6
6 2021-01-03 35.9
7 2021-01-10 37.8
8 2021-01-17 36.8
9 2021-01-24 32.8
10 2021-01-31 33.9
11 2021-02-07 34.1
12 2021-02-14 41.6
13 2021-02-21 31.8
14 2021-02-28 35.2
15 2021-03-07 37.1
Gemiddelde omzet per maand
library (lubridate)
library (dplyr)
#round dates down to week
df$month <- floor_date (df$date, " month ")
#find average sales by month
df %>%
group_by (month) %>%
summarize (mean = mean (sales))
# A tibble: 4 x 2
month mean
1 2020-12-01 35.3
2 2021-01-01 35.6
3 2021-02-01 35.2
4 2021-03-01 37.0
Gemiddelde omzet per jaar
library (lubridate)
library (dplyr)
#round dates down to week
df$year <- floor_date (df$date, " year ")
#find average sales by month
df %>%
group_by (year) %>%
summarize (mean = mean (sales))
# A tibble: 2 x 2
year means
1 2020-01-01 35.3
2 2021-01-01 35.7
Merk op dat we ervoor kiezen om te aggregeren op basis van het gemiddelde, maar we kunnen elke samenvattende statistiek gebruiken die we willen, zoals mediaan, modus, maximum, minimum, enz.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Hoe het gemiddelde per groep in R te berekenen
Hoe cumulatieve bedragen in R te berekenen
Hoe een tijdreeks in R te plotten