Transformar variables continuas en categóricas (2)
Un caso especial de la transformación anterior es dividir una variable continua en intervalos definidos por los cuantiles de la propia variable. Un uso habitual de esta transformación es analizar respuestas de encuestas o puntuaciones de reseñas. Si pides a la gente que valore algo de una a cinco estrellas, a menudo la mediana no será de tres estrellas. En ese caso, puede ser útil separar sus puntuaciones por cuantiles. Por ejemplo, puedes crear cinco grupos (quintiles) dividiendo en los percentiles 0, 20, 40, 60, 80 y 100.
La forma base de R de hacerlo es cut() + quantile(). El equivalente en sparklyr usa la transformación ft_quantile_discretizer(). Esta recibe un argumento num_buckets, que determina el número de intervalos. Las formas de calcularlo en base R y en sparklyr se muestran juntas. Como antes, se establecen 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)
Como con ft_bucketizer(), los intervalos resultantes son números que empiezan a contar desde cero. Si quieres trabajar con ellos en R, conviértelos explícitamente a factor.
Este ejercicio forma parte del curso
Introducción a Spark con sparklyr en R
Instrucciones del ejercicio
Ya tienes creada una conexión a Spark como spark_conn. Se ha predefinido una tibble asociada a los metadatos de las pistas almacenados en Spark como track_metadata_tbl. duration_labels es un vector de caracteres que describe duraciones.
- Crea una variable llamada
familiarity_by_durationa partir detrack_metadata_tbl.- Selecciona los campos
durationyartist_familiarity. - Usa
ft_quantile_discretizer()para crear un campo nuevo,duration_bin, a partir de 5 intervalos por cuantiles deduration. - Recopila el resultado con
collect(). - Convierte el campo
duration_bina un factor con las etiquetasduration_labels.
- Selecciona los campos
- Dibuja un diagrama de cajas con
ggplot()deartist_familiarityporduration_bin.- El primer argumento de
ggplot()es el argumento de datos,familiarity_by_duration. - El segundo argumento de
ggplot()es la estética, que tomaduration_binyartist_familiarityenvueltos enaes(). - Añade
geom_boxplot()para dibujar las cajas.
- El primer argumento de
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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(___, ___)) +
___()