LoslegenKostenlos loslegen

Stetige Variablen in logisch umwandeln

Logische Variablen sind praktisch, weil es oft leichter ist, in „ja oder nein“-Kategorien zu denken als in Zahlen. Wenn dich jemand zum Beispiel fragt: „Möchtest du eine Tasse Tee?“, ist eine Ja- oder Nein-Antwort hilfreicher als „Es gibt eine 0,73-Wahrscheinlichkeit, dass ich eine Tasse Tee möchte“. Das hat auch in der Data Science echte Anwendung. Ein Test auf Diabetes liefert zum Beispiel die Glukosekonzentration im Blutplasma eines Patienten als Zahl. Eigentlich interessiert dich aber: „Hat der Patient Diabetes?“. Also musst du die Zahl auf Basis eines Schwellenwerts in einen logischen Wert umwandeln.

In Base R geht das recht einfach, etwa so:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Alle sparklyr-Funktionen zur Feature-Transformation haben eine ähnliche Benutzeroberfläche. Die ersten drei Argumente sind immer ein Spark-Tibble, ein String mit dem Namen der Eingabespalte und ein String mit dem Namen der Ausgabespalte. Sie folgen also diesem Muster.

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

Die sparklyr-Variante, eine stetige Variable in logisch zu konvertieren, verwendet ft_binarizer(). Das vorherige Diabetes-Beispiel lässt sich so umschreiben. Beachte, dass der Schwellenwert eine Zahl sein sollte und kein String, der sich auf eine Spalte im Datensatz bezieht.

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

Im Sinne der Spark-Philosophie, überall DoubleType zu verwenden, ist die Ausgabe von ft_binarizer() nicht wirklich logisch, sondern numeric. Das ist richtig, wenn du in Spark weiterarbeiten und weitere Transformationen durchführen willst. Wenn du die Daten jedoch in R weiterverarbeiten möchtest, musst du daran denken, die Daten explizit in logisch zu konvertieren. Das folgende Muster ist üblich.

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

In dieser Übung geht es um das, nun ja, unglücklich benannte Feld artist_hotttnesss, das misst, wie viel Medienrummel ein Artist zum Zeitpunkt der Datensatz-Erstellung hatte. Wenn du mehr über das Zeichnen von Plots mit dem Paket ggplot2 lernen möchtest, schau dir den Kurs Introduction to Data Visualization with ggplot2 an.

Diese Übung ist Teil des Kurses

Einführung in Spark mit sparklyr in R

Kurs anzeigen

Anleitung zur Übung

Es wurde bereits eine Spark-Verbindung als spark_conn erstellt. Ein an die in Spark gespeicherten Track-Metadaten angebundenes Tibble ist als track_metadata_tbl vordefiniert.

  • Erstelle eine Variable namens hotttnesss aus track_metadata_tbl.
    • Wähle das Feld artist_hotttnesss aus.
    • Verwende ft_binarizer(), um ein neues Feld is_hottt_or_nottt zu erstellen, das true ist, wenn artist_hotttnesss größer als 0,5 ist.
    • Sammle das Ergebnis ein.
    • Konvertiere das Feld is_hottt_or_nottt in logisch.
  • Zeichne einen ggplot()-Balkenplot von is_hottt_or_nottt.
    • Das erste Argument von ggplot() ist das Datenargument, hotttnesss.
    • Das zweite Argument von ggplot() ist das Ästhetik-Mapping, is_hottt_or_nottt in aes() eingeschlossen.
    • Füge geom_bar() hinzu, um die Balken zu zeichnen.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen