So aggregieren sie tagesdaten in monats- und jahresdaten in r
Manchmal möchten Sie möglicherweise tägliche Daten in wöchentlichen, monatlichen oder jährlichen Daten in R aggregieren.
In diesem Tutorial wird erklärt, wie Sie dies ganz einfach mit den Paketen lubridate und dplyr bewerkstelligen können.
Beispiel: Tägliche Daten in R aggregieren
Angenommen, wir haben den folgenden Datenrahmen in R, der die täglichen Verkäufe eines Artikels über einen Zeitraum von 100 aufeinanderfolgenden Tagen zeigt:
#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
Um diese Daten zu aggregieren, können wir die Funktion floor_date() des Lubridate- Pakets verwenden, die die folgende Syntax verwendet:
floor_date (x, unit)
Gold:
- x: ein Vektor von Datumsobjekten.
- Einheit: Zeiteinheit, auf die gerundet werden soll. Zu den Optionen gehören Sekunden, Minuten, Stunden, Tage, Wochen, Monate, zweimonatlich, Vierteljahre, Halbjahre und Jahre.
Die folgenden Codeausschnitte zeigen, wie diese Funktion mit den Funktionen group_by() und summary() im dplyr- Paket verwendet wird, um durchschnittliche Verkäufe nach Woche, Monat und Jahr zu ermitteln:
Durchschnittlicher Umsatz pro Woche
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
Durchschnittlicher Umsatz pro Monat
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
Durchschnittlicher Umsatz pro Jahr
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
Beachten Sie, dass wir uns für die Aggregation nach dem Mittelwert entscheiden, aber wir können jede gewünschte Zusammenfassungsstatistik verwenden, z. B. Median, Modus, Maximum, Minimum usw.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in R ausführen:
So berechnen Sie den Mittelwert pro Gruppe in R
So berechnen Sie kumulative Summen in R
So zeichnen Sie eine Zeitreihe in R