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
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
hotttnesssztrack_metadata_tbl.- Vyber pole
artist_hotttnesss. - Pomocí
ft_binarizer()vytvoř nové poleis_hottt_or_nottt, které bude mít hodnotu true, pokud jeartist_hotttnesssvětší než 0,5. - Výsledek přenes do R pomocí collect.
- Převeď pole
is_hottt_or_notttna logický typ.
- Vyber pole
- Vykresli sloupcový graf
ggplot()prois_hottt_or_nottt.- Prvním argumentem
ggplot()je datový argumenthotttnesss. - Druhým argumentem
ggplot()je estetika —is_hottt_or_notttzabalená doaes(). - Přidej
geom_bar()pro vykreslení sloupců.
- Prvním argumentem
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(___)) +
___()