Aan de slagBegin gratis

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

Bekijk cursus

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_duration van track_metadata_tbl.
    • Selecteer de velden duration en artist_familiarity.
    • Gebruik ft_quantile_discretizer() om een nieuw veld duration_bin te maken op basis van 5 kwantiel-bins van duration.
    • Verzamel het resultaat met collect().
    • Zet het veld duration_bin om naar een factor met labels duration_labels.
  • Teken een ggplot() boxplot van artist_familiarity per duration_bin.
    • Het eerste argument van ggplot() is het data-argument, familiarity_by_duration.
    • Het tweede argument van ggplot() is de esthetiek, die duration_bin en artist_familiarity neemt, verpakt in aes().
    • Voeg geom_boxplot() toe om de boxen te tekenen.

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(___, ___)) +
  ___()  
Code bewerken en uitvoeren