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

Převod spojitých proměnných na logické

Logické proměnné jsou praktické, protože o mnoha věcech je přirozenější uvažovat v kategoriích „ano nebo ne" než v číselných hodnotách. Pokud se tě někdo zeptá „Dáš si čaj?", odpověď ano nebo ne je mnohem přirozenější než „Pravděpodobnost, že si čaj dám, je 0,73". To má i reálné uplatnění v datové vědě. Například test na diabetes může vrátit koncentraci glukózy v krevní plazmě pacienta jako číslo. Ve skutečnosti tě ale zajímá otázka „Má pacient diabetes?", takže potřebuješ číslo převést na logickou hodnotu na základě určité prahové hodnoty.

V základním R se to dělá celkem jednoduše, přibližně takto:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Všechny funkce pro transformaci příznaků v sparklyr mají podobné rozhraní. První tři argumenty jsou vždy Spark tibble, řetězec s názvem vstupního sloupce a řetězec s názvem výstupního sloupce. Jinými slovy, řídí se tímto vzorem:

a_tibble %>%
  ft_some_transformation("x", "y", some_other_args)

Způsob, jakým sparklyr převádí spojitou proměnnou na logickou, využívá funkci ft_binarizer(). Předchozí příklad s diabetem lze přepsat takto. Pozor: hodnota prahu musí být číslo, nikoli řetězec odkazující na sloupec v datasetu.

diabetes_data %>%
  ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)

V souladu s filozofií Sparku, který všude používá DoubleType, výstup funkce ft_binarizer() ve skutečnosti není logický — je numeric. To je správný přístup, pokud chceš dál pracovat ve Sparku a provádět další transformace. Pokud ale chceš data zpracovávat v R, nezapomeň je explicitně převést na logický typ. Obvyklý vzor kódu vypadá takto:

a_tibble %>%
  ft_binarizer("x", "is_x_big", threshold = threshold) %>%
  collect() %>%
  mutate(is_x_big = as.logical(is_x_big))

Toto cvičení pracuje s poněkud neortodoxně pojmenovaným polem artist_hotttnesss, které měří, jak velký mediální zájem umělec v době vytvoření datasetu vzbuzoval. Pokud se chceš dozvědět více o vykreslování grafů pomocí balíčku ggplot2, podívej se na kurz Introduction to Data Visualization with ggplot2.

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 připraveno jako spark_conn. Tibble napojený na metadata skladeb uložená ve Sparku je předdefinovaný jako track_metadata_tbl.

  • Vytvoř proměnnou hotttnesss z track_metadata_tbl.
    • Vyber pole artist_hotttnesss.
    • Pomocí ft_binarizer() vytvoř nové pole is_hottt_or_nottt, které bude mít hodnotu true, pokud je artist_hotttnesss větší než 0,5.
    • Výsledek přenes do R pomocí collect.
    • Převeď pole is_hottt_or_nottt na logický typ.
  • Vykresli sloupcový graf ggplot() pro is_hottt_or_nottt.
    • Prvním argumentem ggplot() je datový argument hotttnesss.
    • Druhým argumentem ggplot() je estetika — is_hottt_or_nottt zabalená do aes().
    • Přidej geom_bar() pro vykreslení sloupců.

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 has been pre-defined
track_metadata_tbl

hotttnesss <- track_metadata_tbl %>%
  # Select artist_hotttnesss
  ___ %>%
  # Binarize to is_hottt_or_nottt
  ___ %>%
  # Collect the result
  ___ %>%
  # Convert is_hottt_or_nottt to logical
  ___

# Draw a barplot of is_hottt_or_nottt
ggplot(___, aes(___)) +
  ___()
Upravit a spustit kód