Zacznij terazZacznij za darmo

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

Zobacz kurs

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_duration na podstawie track_metadata_tbl.
    • Wybierz pola duration i artist_familiarity.
    • Użyj ft_quantile_discretizer(), aby utworzyć nowe pole duration_bin – złożone z 5 kwantylowych przedziałów zmiennej duration.
    • Zbierz wynik za pomocą collect().
    • Przekonwertuj pole duration_bin na typ factor z etykietami duration_labels.
  • Narysuj wykres pudełkowy ggplot() przedstawiający artist_familiarity w zależności od duration_bin.
    • Pierwszym argumentem ggplot() jest argument danych – familiarity_by_duration.
    • Drugim argumentem ggplot() jest estetyka, która przyjmuje duration_bin i artist_familiarity opakowane w aes().
    • Dodaj geom_boxplot(), aby narysować wykres.

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(___, ___)) +
  ___()  
Edytuj i uruchom kod