Kom igångKom igång gratis

Omvandla kontinuerliga variabler till kategoriska (2)

Ett specialfall av föregående omvandling är att dela upp en kontinuerlig variabel i buckets där gränserna definieras av variabelns kvantiler. En vanlig användning är att analysera enkätsvar eller betyg. Om du ber folk betygsätta något på en skala från ett till fem stjärnor är mediansvaret ofta inte tre stjärnor. Då kan det vara användbart att dela upp svaren efter kvantil. Du kan till exempel skapa fem kvintilgrupper genom att dela vid 0:e, 20:e, 40:e, 60:e, 80:e och 100:e percentilen.

I bas-R görs detta med cut() + quantile(). Motsvarigheten i sparklyr är omvandlingen ft_quantile_discretizer(). Den tar argumentet num_buckets, som styr antalet buckets. Bas-R- och sparklyr-varianterna visas tillsammans nedan. Som tidigare är right = FALSE och include.lowest inställda.

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)

Precis som med ft_bucketizer() är de resulterande bucketsen numrerade från noll. Om du vill arbeta med dem i R bör du explicit konvertera dem till en factor.

Den här övningen är en del av kursen

Introduktion till Spark med sparklyr i R

Visa kurs

Övningsinstruktioner

En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark är fördefinierad som track_metadata_tbl. duration_labels är en teckenvektors som beskriver olika längder.

  • Skapa en variabel med namnet familiarity_by_duration från track_metadata_tbl.
    • Välj fälten duration och artist_familiarity.
    • Använd ft_quantile_discretizer() för att skapa ett nytt fält, duration_bin, med 5 kvantilbuckets baserade på duration.
    • Hämta resultatet med collect.
    • Konvertera fältet duration_bin till en faktor med etiketterna i duration_labels.
  • Rita ett ggplot()-lådagram över artist_familiarity uppdelat på duration_bin.
    • Det första argumentet till ggplot() är dataargumentet, familiarity_by_duration.
    • Det andra argumentet till ggplot() är estetiken, som tar duration_bin och artist_familiarity inslagna i aes().
    • Lägg till geom_boxplot() för att rita lådagrammen.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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(___, ___)) +
  ___()  
Redigera och kör kod