Inizia subitoInizia gratis

Trasformare variabili continue in categoriche (2)

Un caso particolare della trasformazione precedente è suddividere una variabile continua in intervalli in cui i confini sono definiti dai quantili della variabile. Un uso comune di questa trasformazione è analizzare le risposte ai sondaggi o i punteggi delle recensioni. Se chiedi alle persone di valutare qualcosa da una a cinque stelle, spesso la risposta mediana non è tre stelle. In questi casi può essere utile suddividere i punteggi per quantile. Per esempio, puoi creare cinque gruppi (quintili) separando a 0°, 20°, 40°, 60°, 80° e 100° percentile.

In base R il modo per farlo è cut() + quantile(). L'equivalente in sparklyr usa la trasformazione ft_quantile_discretizer(). Questa accetta l'argomento num_buckets, che determina il numero di intervalli. I metodi in base R e in sparklyr per calcolare questo sono mostrati insieme. Come prima, si impostano right = FALSE e include.lowest.

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)

Come con ft_bucketizer(), i bucket risultanti sono numeri che partono da zero. Se vuoi lavorarci in R, converti esplicitamente a factor.

Questo esercizio fa parte del corso

Introduzione a Spark con sparklyr in R

Visualizza corso

Istruzioni dell'esercizio

È già stata creata una connessione Spark chiamata spark_conn. Una tibble collegata ai metadati delle tracce salvati in Spark è stata predefinita come track_metadata_tbl. duration_labels è un vettore di caratteri che descrive le durate.

  • Crea una variabile chiamata familiarity_by_duration a partire da track_metadata_tbl.
    • Seleziona i campi duration e artist_familiarity.
    • Usa ft_quantile_discretizer() per creare un nuovo campo, duration_bin, composto da 5 bucket per quantile di duration.
    • Esegui la raccolta del risultato.
    • Converte il campo duration_bin in un fattore con etichette duration_labels.
  • Disegna un box plot con ggplot() di artist_familiarity in funzione di duration_bin.
    • Il primo argomento di ggplot() è l'argomento dei dati, familiarity_by_duration.
    • Il secondo argomento di ggplot() è l'estetica, che prende duration_bin e artist_familiarity racchiusi in aes().
    • Aggiungi geom_boxplot() per disegnare i riquadri.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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(___, ___)) +
  ___()  
Modifica ed esegui il codice