Aan de slagBegin gratis

Continue variabelen omzetten naar logisch

Logische variabelen zijn prettig, omdat het vaak makkelijker is om in termen van “ja of nee” te denken dan in getallen. Als iemand je bijvoorbeeld vraagt: “Wil je een kop thee?”, dan is een ja-of-nee-antwoord handiger dan: “De kans dat ik thee wil is 0,73.” Dit heeft ook echte data science-toepassingen. Een test op diabetes kan bijvoorbeeld de glucoseconcentratie in iemands bloedplasma als getal teruggeven. Waar het je écht om gaat is: “Heeft de patiënt diabetes?” Dus moet je dat getal omzetten naar een logische waarde op basis van een drempelwaarde.

In base R kan dat vrij eenvoudig, met zoiets als:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Alle sparklyr-functies voor featuretransformatie hebben een vergelijkbare interface. De eerste drie argumenten zijn altijd een Spark-tibble, een string met de naam van de inputkolom en een string met de naam van de outputkolom. Ze volgen dus dit patroon.

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

De sparklyr-manier om een continue variabele om te zetten naar logisch gebruikt ft_binarizer(). Het eerdere diabetesvoorbeeld kun je zo herschrijven. Let op: de drempelwaarde moet een getal zijn, geen string die verwijst naar een kolom in de gegevensset.

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

In lijn met de Spark-filosofie om overal DoubleType te gebruiken, is de output van ft_binarizer() niet echt logisch; het is numeric. Dat is handig als je in Spark wilt blijven werken en verdere transformaties wilt doen, maar als je de data in R wilt verwerken, moet je er aan denken de data expliciet om te zetten naar logisch. Het volgende is een veelgebruikt codepatroon.

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

In deze oefening ga je aan de slag met het, eh, rampzalig benoemde veld artist_hotttnesss, dat aangeeft hoeveel media-aandacht een artiest had toen de gegevensset werd gemaakt. Wil je meer leren over grafieken maken met het pakket ggplot2? Volg dan de cursus Introduction to Data Visualization with ggplot2.

Deze oefening maakt deel uit van de cursus

Introductie tot Spark met sparklyr in R

Bekijk cursus

Oefeninstructies

Er is al een Spark-verbinding voor je aangemaakt als spark_conn. Een tibble met de trackmetadata die in Spark is opgeslagen is vooraf gedefinieerd als track_metadata_tbl.

  • Maak een variabele hotttnesss op basis van track_metadata_tbl.
    • Selecteer het veld artist_hotttnesss.
    • Gebruik ft_binarizer() om een nieuw veld is_hottt_or_nottt te maken, dat true is wanneer artist_hotttnesss groter is dan 0.5.
    • Haal het resultaat op met collect().
    • Zet het veld is_hottt_or_nottt om naar logisch.
  • Teken een ggplot()-staafdiagram van is_hottt_or_nottt.
    • Het eerste argument van ggplot() is het data-argument, hotttnesss.
    • Het tweede argument van ggplot() is de esthetiek, is_hottt_or_nottt verpakt in aes().
    • Voeg geom_bar() toe om de balken te tekenen.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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(___)) +
  ___()
Code bewerken en uitvoeren