Gruppen: großartig für Musik, großartig für Daten
Ein häufiges Analyseproblem ist, wie man zusammenfassende Statistiken für jede Datengruppe berechnet. Du möchtest zum Beispiel deine Umsätze nach Monat oder Region kennen. In R nennt man den Prozess, deine Daten in Gruppen aufzuteilen, auf jede Gruppe eine Kennzahl anzuwenden und die Ergebnisse in einer einzigen Datenstruktur zu kombinieren, „split-apply-combine“. Das Konzept ist jedoch viel älter: SQL hat die GROUP BY-Anweisung seit Jahrzehnten. Der Begriff „map-reduce“ ist ein ähnliches Konzept, wobei „map“ grob den Schritten „split“ und „apply“ entspricht und „reduce“ dem „combine“. Der dplyr/sparklyr-Ansatz ist, group_by() zu verwenden, bevor du mutate() oder summarize() anwendest. Die Funktion nimmt die unzitierten Namen der Spalten, nach denen gruppiert werden soll. Um zum Beispiel den Mittelwert der Spalte x für jede Kombination der Werte in den Spalten grp1 und grp2 zu berechnen, würdest du Folgendes schreiben.
a_tibble %>%
group_by(grp1, grp2) %>%
summarize(mean_x = mean(x))
Beachte, dass die an group_by() übergebenen Spalten typischerweise kategoriale Variablen sein sollten. Wenn du zum Beispiel das durchschnittliche Gewicht von Menschen in Abhängigkeit von ihrer Körpergröße berechnen möchtest, ergibt es wenig Sinn, nach der Körpergröße zu gruppieren, da jede Größe einzigartig ist. Du könntest jedoch cut() verwenden, um die Größen in Kategorien einzuteilen und dann das mittlere Gewicht pro Kategorie zu berechnen.
Diese Übung ist Teil des Kurses
Einführung in Spark mit sparklyr in R
Anleitung zur Übung
Es wurde bereits eine Spark-Verbindung als spark_conn erstellt. Ein Tibble, das an die in Spark gespeicherten Track-Metadaten angebunden ist, wurde als track_metadata_tbl vordefiniert.
- Gruppiere den Inhalt von
track_metadatanachartist_nameund:- Fasse den gruppenweisen Mittelwert von
durationals neue Spaltemean_durationzusammen. - Weise die Ergebnisse
duration_by_artistzu.
- Fasse den gruppenweisen Mittelwert von
- Finde die Künstler mit den kürzesten Songs, indem du die Zeilen in aufsteigender Reihenfolge von
mean_durationanordnest. - Finde analog die mit den längsten Songs, indem du in absteigender Reihenfolge von
mean_durationanordnest.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
duration_by_artist <- track_metadata_tbl %>%
# Group by artist
___ %>%
# Calc mean duration
___
duration_by_artist %>%
# Sort by ascending mean duration
___
duration_by_artist %>%
# Sort by descending mean duration
___