Začněte nyníZačněte zdarma

Transformace spojitých proměnných na kategorické (1)

Rozšířením předchozí myšlenky je použití více prahových hodnot – tedy rozdělení spojité proměnné do „košů" (nebo „přihrádek"), stejně jako to dělá histogram. V základním R by sis na tento úkol pomohl/a funkcí cut(). Například ve studii o kuřáckých návycích můžeš vzít průměrný počet cigaret za den a převést ho na faktor.

smoking_status <- cut(
  cigarettes_per_day,
  breaks = c(0, 1, 10, 20, Inf),
  labels = c("non", "light", "moderate", "heavy"),
  right  = FALSE
)

Ekvivalentem v sparklyr je funkce ft_bucketizer(). Kód má podobný formát jako ft_binarizer(), tentokrát ale musíš předat vektor hraničních hodnot argumentu splits. Tady je stejný příklad přepsaný ve stylu sparklyr.

smoking_data %>%
  ft_bucketizer("cigarettes_per_day", "smoking_status", splits = c(0, 1, 10, 20, Inf))

Je tu několik důležitých věcí, které stojí za pozornost. Možná sis všiml/a, že argument breaks z funkce cut() odpovídá argumentu splits z ft_bucketizer(). Drobný rozdíl je v tom, jak se zachází s hodnotami na hranici přihrádky. Ve funkci cut() je standardně horní (pravá) hranice každé přihrádky zahrnuta, levá nikoli. ft_bucketizer() naopak zahrnuje dolní (levou) hranici, ale nikoli pravou. Chová se tedy stejně jako volání cut() s argumentem right = FALSE.

Výjimkou je nejvyšší přihrádka – ft_bucketizer() v jejím případě zahrnuje obě hranice. To odpovídá nastavení include.lowest = TRUE ve funkci cut().

A ještě jedna důležitá věc: zatímco cut() vrací faktor, ft_bucketizer() vrací číselný vektor (numeric) – hodnoty v první přihrádce jsou nula, ve druhé jedna, ve třetí dva a tak dále. Pokud chceš s výsledky dál pracovat v R, musíš je explicitně převést na faktor. Toto je typický vzor kódu:

a_tibble %>%
  ft_bucketizer("x", "x_buckets", splits = splits) %>%
  collect() %>%
  mutate(x_buckets = factor(x_buckets, labels = labels))

Toto cvičení je součástí kurzu

Úvod do Sparku se sparklyr v R

Zobrazit kurz

Pokyny k cvičení

Připojení ke Sparku je pro tebe připraveno jako spark_conn. Tibble napojený na metadata skladeb uložená ve Sparku je předdefinován jako track_metadata_tbl. decades je číselná posloupnost 1920, 1930, …, 2020 a decade_labels jsou textové popisky těchto dekád.

  • Vytvoř proměnnou hotttnesss_over_time z track_metadata_tbl.
    • Vyber sloupce artist_hotttnesss a year.
    • Převeď sloupec year na číselný typ (numeric).
    • Pomocí ft_bucketizer() vytvoř nové pole decade, které rozdělí roky podle hodnot v decades.
    • Sesbírej výsledek pomocí collect().
    • Převeď pole decade na faktor s popisky decade_labels.
  • Vytvoř boxplot v ggplot() znázorňující artist_hotttnesss podle decade.
    • Prvním argumentem ggplot() je datový argument hotttnesss_over_time.
    • Druhým argumentem ggplot() je estetika – decade a artist_hotttnesss zabalené do aes().
    • Přidej geom_boxplot() pro vykreslení boxplotů.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# track_metadata_tbl, decades, decade_labels have been pre-defined
track_metadata_tbl
decades
decade_labels

hotttnesss_over_time <- track_metadata_tbl %>%
  # Select artist_hotttnesss and year
  ___ %>%
  # Convert year to numeric
  ___ %>%
  # Bucketize year to decade using decades vector
  ___ %>%
  # Collect the result
  ___ %>%
  # Convert decade to factor using decade_labels
  ___

# Draw a boxplot of artist_hotttnesss by decade
ggplot(___, aes(___, ___)) +
  ___()  
Upravit a spustit kód