Continue variabelen omzetten naar categorisch (2)
Een speciaal geval van de vorige transformatie is het opdelen van een continue variabele in buckets die worden bepaald door de kwantielen van die variabele. Dit wordt vaak gebruikt om enquêteresultaten of reviewcijfers te analyseren. Als je mensen vraagt iets te beoordelen met één tot vijf sterren, is de mediaan vaak niet precies drie sterren. In dat geval kan het handig zijn om de scores op te splitsen per kwantiel. Je kunt bijvoorbeeld vijf kwintielgroepen maken door te splitsen op de 0e, 20e, 40e, 60e, 80e en 100e percentielen.
De base-R manier om dit te doen is cut() + quantile(). Het sparklyr-equivalent gebruikt de transformatie ft_quantile_discretizer(). Deze neemt een argument num_buckets, dat het aantal buckets bepaalt. De base-R- en sparklyr-manieren om dit te berekenen staan naast elkaar. Net als eerder worden right = FALSE en include.lowest ingesteld.
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)
Net als bij ft_bucketizer() zijn de resulterende bins getallen die vanaf nul tellen. Als je er in R mee wilt werken, zet ze dan expliciet om naar een factor.
Deze oefening maakt deel uit van de cursus
Introductie tot Spark met sparklyr in R
Oefeninstructies
Er is een Spark-verbinding voor je aangemaakt als spark_conn. Een tibble gekoppeld aan de trackmetadata die in Spark is opgeslagen is vooraf gedefinieerd als track_metadata_tbl. duration_labels is een tekenreeksvector die lengtes van tijd beschrijft.
- Maak een variabele
familiarity_by_durationvantrack_metadata_tbl.- Selecteer de velden
durationenartist_familiarity. - Gebruik
ft_quantile_discretizer()om een nieuw veldduration_binte maken op basis van 5 kwantiel-bins vanduration. - Verzamel het resultaat met
collect(). - Zet het veld
duration_binom naar een factor met labelsduration_labels.
- Selecteer de velden
- Teken een
ggplot()boxplot vanartist_familiarityperduration_bin.- Het eerste argument van
ggplot()is het data-argument,familiarity_by_duration. - Het tweede argument van
ggplot()is de esthetiek, dieduration_binenartist_familiarityneemt, verpakt inaes(). - Voeg
geom_boxplot()toe om de boxen te tekenen.
- Het eerste argument van
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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(___, ___)) +
___()