Stetige Variablen in kategoriale umwandeln (2)
Ein Spezialfall der vorherigen Transformation ist, eine stetige Variable in Bins zu unterteilen, wobei die Bins durch Quantile der Variable definiert sind. Häufig nutzt man diese Transformation, um Umfrageantworten oder Bewertungs-Scores zu analysieren. Wenn du Leute bittest, etwas mit einem bis fünf Sternen zu bewerten, ist die Median-Antwort oft nicht drei Sterne. In diesem Fall kann es hilfreich sein, die Scores nach Quantilen aufzuteilen. Zum Beispiel kannst du fünf Quintil-Gruppen bilden, indem du bei den 0-, 20-, 40-, 60-, 80- und 100-Perzentilen trennst.
Der Base-R-Weg hierfür ist cut() + quantile(). Das sparklyr-Gegenstück verwendet die Transformation ft_quantile_discretizer(). Sie nimmt ein Argument num_buckets, das die Anzahl der Bins bestimmt. Die Base-R- und sparklyr-Varianten werden zusammen gezeigt. Wie zuvor sind right = FALSE und include.lowest gesetzt.
survey_response_group <- cut(
survey_score,
breaks = quantile(survey_score, c(0, 0.25, 0.5, 0.75, 1)),
labels = c("hate it", "dislike it", "like it", "love it"),
right = FALSE,
include.lowest = TRUE
)
survey_data %>%
ft_quantile_discretizer("survey_score", "survey_response_group", num_buckets = 4)
Wie bei ft_bucketizer() sind die resultierenden Bins Zahlen, beginnend bei null. Wenn du in R damit arbeiten willst, wandle sie explizit in einen factor um.
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 Tibble, das mit den in Spark gespeicherten Track-Metadaten verknüpft ist, wurde als track_metadata_tbl vordefiniert. duration_labels ist ein Character-Vektor, der Zeitspannen beschreibt.
- Erstelle aus
track_metadata_tbleine Variable namensfamiliarity_by_duration.- Wähle die Felder
durationundartist_familiarityaus. - Verwende
ft_quantile_discretizer(), um ein neues Feldduration_binaus 5 Quantil-Bins vondurationzu erstellen. - Sammle das Ergebnis ein.
- Wandle das Feld
duration_binmit Labelsduration_labelsin einen Faktor um.
- Wähle die Felder
- Zeichne einen Boxplot mit
ggplot()vonartist_familiaritynachduration_bin.- Das erste Argument von
ggplot()ist das Datenargumentfamiliarity_by_duration. - Das zweite Argument von
ggplot()ist das Aesthetic, dasduration_binundartist_familiarityinaes()verpackt. - Füge
geom_boxplot()hinzu, um die Boxen zu zeichnen.
- Das erste Argument von
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# track_metadata_tbl, duration_labels have been pre-defined
track_metadata_tbl
duration_labels
familiarity_by_duration <- track_metadata_tbl %>%
# Select duration and artist_familiarity
___ %>%
# Bucketize duration
___ %>%
# Collect the result
___ %>%
# Convert duration bin to factor
___
# Draw a boxplot of artist_familiarity by duration_bin
ggplot(___, aes(___, ___)) +
___()