Common people
Die Funktion distinct() hat dir die eindeutigen Werte gezeigt. Oft ist es auch hilfreich zu wissen, wie viele Vorkommen jedes Werts es gibt. Die Base-R-Funktion dafür ist table(); sie wird in sparklyr nicht unterstützt, da sie nicht der tidyverse-Philosophie entspricht, alles in Tibbles zu halten. Stattdessen musst du count() verwenden. Dafür übergibst du die unzitierten Namen der Spalten. Um zum Beispiel die Häufigkeiten eindeutiger Kombinationen der Spalten x, y und z zu ermitteln, würdest du Folgendes schreiben.
a_tibble %>%
count(x, y, z)
Das Ergebnis entspricht
a_tibble %>%
distinct(x, y, z)
… mit dem Unterschied, dass du eine zusätzliche Spalte n mit den Zählwerten erhältst.
Eine sehr praktische Anwendung von count() ist es, die am häufigsten vorkommenden Werte zu bekommen. Dazu rufst du count() mit dem Argument sort = TRUE auf, wodurch die Zeilen nach absteigenden Werten der Spalte n sortiert werden, und nutzt anschließend slice_max(), um die Ergebnisse auf die obersten, beliebig vielen Werte zu begrenzen. (slice_max() ist ähnlich wie head() in Base R, funktioniert aber mit entfernten Datensätzen wie denen in Spark.) Um beispielsweise die 20 häufigsten Kombinationen der Spalten x, y und z zu erhalten, verwendest du Folgendes.
a_tibble %>%
count(x, y, z, sort = TRUE) %>%
slice_max(20)
Diese Übung ist Teil des Kurses
Einführung in Spark mit sparklyr in R
Anleitung zur Übung
Eine Spark-Verbindung wurde als spark_conn für dich erstellt. Ein an die in Spark gespeicherten Track-Metadaten angebundenes Tibble wurde als track_metadata_tbl vordefiniert.
- Zähle die Werte in der Spalte
artist_nameaustrack_metadata_tbl.- Übergebe
sort = TRUE, um die Zeilen nach absteigender Popularität zu sortieren.
- Übergebe
- Beschränke die Ergebnisse mithilfe von
slice_max()auf die Top 20.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Count the artist_name values
___ %>%
# Restrict to top 20
___