Omvandla kontinuerliga variabler till kategoriska (2)
Ett specialfall av föregående omvandling är att dela upp en kontinuerlig variabel i buckets där gränserna definieras av variabelns kvantiler. En vanlig användning är att analysera enkätsvar eller betyg. Om du ber folk betygsätta något på en skala från ett till fem stjärnor är mediansvaret ofta inte tre stjärnor. Då kan det vara användbart att dela upp svaren efter kvantil. Du kan till exempel skapa fem kvintilgrupper genom att dela vid 0:e, 20:e, 40:e, 60:e, 80:e och 100:e percentilen.
I bas-R görs detta med cut() + quantile(). Motsvarigheten i sparklyr är omvandlingen ft_quantile_discretizer(). Den tar argumentet num_buckets, som styr antalet buckets. Bas-R- och sparklyr-varianterna visas tillsammans nedan. Som tidigare är right = FALSE och include.lowest inställda.
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)
Precis som med ft_bucketizer() är de resulterande bucketsen numrerade från noll. Om du vill arbeta med dem i R bör du explicit konvertera dem till en factor.
Den här övningen är en del av kursen
Introduktion till Spark med sparklyr i R
Övningsinstruktioner
En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark är fördefinierad som track_metadata_tbl. duration_labels är en teckenvektors som beskriver olika längder.
- Skapa en variabel med namnet
familiarity_by_durationfråntrack_metadata_tbl.- Välj fälten
durationochartist_familiarity. - Använd
ft_quantile_discretizer()för att skapa ett nytt fält,duration_bin, med 5 kvantilbuckets baserade påduration. - Hämta resultatet med collect.
- Konvertera fältet
duration_bintill en faktor med etiketterna iduration_labels.
- Välj fälten
- Rita ett
ggplot()-lådagram överartist_familiarityuppdelat påduration_bin.- Det första argumentet till
ggplot()är dataargumentet,familiarity_by_duration. - Det andra argumentet till
ggplot()är estetiken, som tarduration_binochartist_familiarityinslagna iaes(). - Lägg till
geom_boxplot()för att rita lådagrammen.
- Det första argumentet till
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(___, ___)) +
___()