ComeçarComece de graça

Transformando variáveis contínuas em categóricas (2)

Um caso especial da transformação anterior é dividir uma variável contínua em intervalos definidos pelos quantis da variável. Um uso comum dessa transformação é analisar respostas de pesquisas ou notas de avaliação. Se você pede para as pessoas darem uma nota de uma a cinco estrelas, muitas vezes a mediana não será três estrelas. Nesses casos, pode ser útil dividir as notas por quantis. Por exemplo, você pode criar cinco grupos (quintis) ao dividir nos percentis 0, 20, 40, 60, 80 e 100.

A maneira em base R de fazer isso é com cut() + quantile(). O equivalente em sparklyr usa a transformação ft_quantile_discretizer(). Ela recebe um argumento num_buckets, que determina o número de intervalos. As abordagens em base R e sparklyr para calcular isso são mostradas juntas. Como antes, right = FALSE e include.lowest são definidos.

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)

Assim como em ft_bucketizer(), os intervalos resultantes são números, começando do zero. Se você quiser trabalhar com eles no R, converta explicitamente para factor.

Este exercício faz parte do curso

Introdução ao Spark com sparklyr em R

Ver curso

Instruções do exercício

Uma conexão com o Spark foi criada para você como spark_conn. Uma tibble vinculada aos metadados de faixas armazenados no Spark foi pré-definida como track_metadata_tbl. duration_labels é um vetor de caracteres que descreve comprimentos de tempo.

  • Crie uma variável chamada familiarity_by_duration a partir de track_metadata_tbl.
    • Selecione os campos duration e artist_familiarity.
    • Use ft_quantile_discretizer() para criar um novo campo, duration_bin, formado por 5 intervalos por quantis de duration.
    • Colete o resultado.
    • Converta o campo duration_bin para fator com os rótulos duration_labels.
  • Desenhe um boxplot do artist_familiarity por duration_bin usando ggplot().
    • O primeiro argumento de ggplot() é o argumento de dados, familiarity_by_duration.
    • O segundo argumento de ggplot() é a estética, que recebe duration_bin e artist_familiarity dentro de aes().
    • Adicione geom_boxplot() para desenhar as barras.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código