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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert