ComenzarEmpieza gratis

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

Ver curso

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_duration a partir de track_metadata_tbl.
    • Selecciona los campos duration y artist_familiarity.
    • Usa ft_quantile_discretizer() para crear un campo nuevo, duration_bin, a partir de 5 intervalos por cuantiles de duration.
    • Recopila el resultado con collect().
    • Convierte el campo duration_bin a un factor con las etiquetas duration_labels.
  • Dibuja un diagrama de cajas con ggplot() de artist_familiarity por duration_bin.
    • El primer argumento de ggplot() es el argumento de datos, familiarity_by_duration.
    • El segundo argumento de ggplot() es la estética, que toma duration_bin y artist_familiarity envueltos en aes().
    • Añade geom_boxplot() para dibujar las cajas.

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(___, ___)) +
  ___()  
Editar y ejecutar código