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
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_durationa partir detrack_metadata_tbl.- Selecione os campos
durationeartist_familiarity. - Use
ft_quantile_discretizer()para criar um novo campo,duration_bin, formado por 5 intervalos por quantis deduration. - Colete o resultado.
- Converta o campo
duration_binpara fator com os rótulosduration_labels.
- Selecione os campos
- Desenhe um boxplot do
artist_familiarityporduration_binusandoggplot().- O primeiro argumento de
ggplot()é o argumento de dados,familiarity_by_duration. - O segundo argumento de
ggplot()é a estética, que recebeduration_bineartist_familiaritydentro deaes(). - Adicione
geom_boxplot()para desenhar as barras.
- O primeiro argumento de
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(___, ___)) +
___()