Przekształcanie zmiennych ciągłych na kategoryczne (2)
Szczególnym przypadkiem poprzedniego przekształcenia jest podział zmiennej ciągłej na przedziały wyznaczone przez kwantyle tej zmiennej. Takie przekształcenie często stosuje się przy analizie odpowiedzi ankietowych lub ocen. Jeśli poprosisz kogoś o ocenę w skali od jednej do pięciu gwiazdek, mediana odpowiedzi niekoniecznie wyniesie trzy. W takiej sytuacji przydatne bywa podzielenie wyników według kwantyli. Na przykład możesz utworzyć pięć grup kwintylowych, dzieląc dane w 0., 20., 40., 60., 80. i 100. percentylu.
W bazowym R służy do tego cut() + quantile(). Odpowiednikiem w sparklyr jest przekształcenie ft_quantile_discretizer(). Przyjmuje ono argument num_buckets, który określa liczbę przedziałów. Poniżej pokazano oba podejścia – bazowe R i sparklyr – zestawione razem. Podobnie jak wcześniej, ustawiono right = FALSE i 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)
Podobnie jak w przypadku ft_bucketizer(), wynikowe przedziały są liczbami, numerowanymi od zera. Jeśli chcesz pracować z nimi w R, jawnie przekonwertuj je na typ factor.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
Połączenie ze Sparkiem zostało utworzone jako spark_conn. Tibble powiązany z metadanymi utworów przechowywanymi w Sparku jest wstępnie zdefiniowany jako track_metadata_tbl. duration_labels to wektor znakowy opisujący przedziały czasu.
- Utwórz zmienną o nazwie
familiarity_by_durationna podstawietrack_metadata_tbl.- Wybierz pola
durationiartist_familiarity. - Użyj
ft_quantile_discretizer(), aby utworzyć nowe poleduration_bin– złożone z 5 kwantylowych przedziałów zmiennejduration. - Zbierz wynik za pomocą
collect(). - Przekonwertuj pole
duration_binna typ factor z etykietamiduration_labels.
- Wybierz pola
- Narysuj wykres pudełkowy
ggplot()przedstawiającyartist_familiarityw zależności odduration_bin.- Pierwszym argumentem
ggplot()jest argument danych –familiarity_by_duration. - Drugim argumentem
ggplot()jest estetyka, która przyjmujeduration_biniartist_familiarityopakowane waes(). - Dodaj
geom_boxplot(), aby narysować wykres.
- Pierwszym argumentem
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(___, ___)) +
___()