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
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_durationa partire datrack_metadata_tbl.- Seleziona i campi
durationeartist_familiarity. - Usa
ft_quantile_discretizer()per creare un nuovo campo,duration_bin, composto da 5 bucket per quantile diduration. - Esegui la raccolta del risultato.
- Converte il campo
duration_binin un fattore con etichetteduration_labels.
- Seleziona i campi
- Disegna un box plot con
ggplot()diartist_familiarityin funzione diduration_bin.- Il primo argomento di
ggplot()è l'argomento dei dati,familiarity_by_duration. - Il secondo argomento di
ggplot()è l'estetica, che prendeduration_bineartist_familiarityracchiusi inaes(). - Aggiungi
geom_boxplot()per disegnare i riquadri.
- Il primo argomento di
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(___, ___)) +
___()