Transformarea variabilelor continue în variabile logice
Variabilele logice sunt utile deoarece adesea este mai simplu să gândești în termeni de „da sau nu" decât în termeni numerici. De exemplu, dacă cineva te întreabă „Vrei o ceașcă de ceai?", un răspuns de tip da sau nu este mult mai practic decât „Există o probabilitate de 0,73 ca eu să vreau ceai". Acest lucru are aplicații reale și în știința datelor. De exemplu, un test pentru diabet poate returna concentrația de glucoză din plasma sanguină a unui pacient sub formă numerică. Ceea ce contează cu adevărat este „Pacientul are diabet?", așa că trebuie să convertești acea valoare numerică într-una logică, pe baza unui prag.
În R de bază, acest lucru se face destul de simplu, astfel:
threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l
Toate funcțiile de transformare a caracteristicilor din sparklyr au o interfață similară. Primele trei argumente sunt întotdeauna un tibble Spark, un șir de caractere care denumește coloana de intrare și un șir de caractere care denumește coloana de ieșire. Cu alte cuvinte, urmează acest tipar:
a_tibble %>%
ft_some_transformation("x", "y", some_other_args)
Metoda sparklyr de a converti o variabilă continuă în una logică folosește ft_binarizer(). Exemplul anterior cu diabetul poate fi rescris astfel. Reține că valoarea pragului trebuie să fie un număr, nu un șir de caractere care face referire la o coloană din setul de date.
diabetes_data %>%
ft_binarizer("plasma_glucose_concentration", "has_diabetes", threshold = threshold_mmol_per_l)
În spiritul filozofiei Spark de a folosi DoubleType peste tot, rezultatul returnat de ft_binarizer() nu este de fapt logic; este numeric. Aceasta este abordarea corectă atunci când vrei să continui să lucrezi în Spark și să aplici alte transformări, însă dacă vrei să procesezi datele în R, trebuie să convertești explicit datele la tipul logic. Iată un tipar de cod frecvent utilizat:
a_tibble %>%
ft_binarizer("x", "is_x_big", threshold = threshold) %>%
collect() %>%
mutate(is_x_big = as.logical(is_x_big))
Acest exercițiu lucrează cu câmpul cu numele oarecum neobișnuit artist_hotttnesss, care oferă o măsură a vizibilității media a artistului la momentul creării setului de date. Dacă vrei să afli mai multe despre realizarea graficelor cu pachetul ggplot2, te invităm să urmezi cursul Introduction to Data Visualization with ggplot2.
Acest exercițiu face parte din cursul
Introducere în Spark cu sparklyr în R
Instrucțiuni pentru exercițiu
O conexiune Spark a fost creată pentru tine sub numele spark_conn. Un tibble asociat metadatelor pistelor stocate în Spark a fost predefinit ca track_metadata_tbl.
- Creează o variabilă numită
hotttnesssdintrack_metadata_tbl.- Selectează câmpul
artist_hotttnesss. - Folosește
ft_binarizer()pentru a crea un câmp nou,is_hottt_or_nottt, care este adevărat atunci cândartist_hotttnessseste mai mare de 0,5. - Colectează rezultatul.
- Convertește câmpul
is_hottt_or_notttla tip logic.
- Selectează câmpul
- Desenează un grafic de bare
ggplot()al câmpuluiis_hottt_or_nottt.- Primul argument al funcției
ggplot()este argumentul de date,hotttnesss. - Al doilea argument al funcției
ggplot()este estetica,is_hottt_or_notttînfășurată înaes(). - Adaugă
geom_bar()pentru a desena barele.
- Primul argument al funcției
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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(___)) +
___()