ÎncepețiÎncepe gratuit

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

Vezi cursul

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ă hotttnesss din track_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ând artist_hotttnesss este mai mare de 0,5.
    • Colectează rezultatul.
    • Convertește câmpul is_hottt_or_nottt la tip logic.
  • Desenează un grafic de bare ggplot() al câmpului is_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ă în aes().
    • Adaugă geom_bar() pentru a desena barele.

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(___)) +
  ___()
Editează și rulează codul