Kom igångKom igång gratis

Omvandla kontinuerliga variabler till logiska

Logiska variabler är praktiska eftersom det ofta är enklare att tänka i termer av "ja eller nej" än i numeriska termer. Om någon frågar dig "Vill du ha en kopp te?" är ett ja eller nej att föredra framför "Det är 0,73 sannolikhet att jag vill ha en kopp te". Det här har också verkliga tillämpningar inom datavetenskap. Ett test för diabetes kan till exempel returnera glukoskoncentrationen i en patients blodplasma som ett tal. Det du egentligen vill veta är "Har patienten diabetes?" – och då behöver du omvandla talet till ett logiskt värde baserat på ett tröskelvärde.

I bas-R görs detta relativt enkelt, ungefär så här:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Alla funktioner för särdragstransformation i sparklyr har ett liknande gränssnitt. De tre första argumenten är alltid en Spark-tibble, en sträng som anger indatakolumnen och en sträng som anger utdatakolumnen. De följer alltså det här mönstret:

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

I sparklyr används ft_binarizer() för att omvandla en kontinuerlig variabel till logisk. Diabetesexemplet ovan kan skrivas om så här. Observera att tröskelvärdet ska vara ett tal, inte en sträng som refererar till en kolumn i datamängden.

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

I enlighet med Sparks filosofi att använda DoubleType överallt är utdata från ft_binarizer() inte faktiskt logisk – den är numeric. Det är rätt approach om du vill fortsätta arbeta i Spark och utföra fler transformationer, men om du vill bearbeta dina data i R måste du komma ihåg att explicit konvertera datan till logisk. Följande är ett vanligt kodmönster:

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

Den här övningen handlar om det, ahem, kreativt namngivna fältet artist_hotttnesss, som mäter hur mycket medialt buzz en artist hade när datamängden skapades. Om du vill lära dig mer om att rita diagram med paketet ggplot2, ta kursen Introduction to Data Visualization with ggplot2.

Den här övningen är en del av kursen

Introduktion till Spark med sparklyr i R

Visa kurs

Övningsinstruktioner

En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till spårmetadata lagrad i Spark har fördefinieras som track_metadata_tbl.

  • Skapa en variabel med namnet hotttnesss från track_metadata_tbl.
    • Välj fältet artist_hotttnesss.
    • Använd ft_binarizer() för att skapa ett nytt fält, is_hottt_or_nottt, som är sant när artist_hotttnesss är större än 0,5.
    • Hämta resultatet med collect.
    • Konvertera fältet is_hottt_or_nottt till logisk.
  • Rita ett stapeldiagram med ggplot() över is_hottt_or_nottt.
    • Det första argumentet till ggplot() är dataargumentet hotttnesss.
    • Det andra argumentet till ggplot() är estetiken is_hottt_or_nottt insvept i aes().
    • Lägg till geom_bar() för att rita staplarna.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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(___)) +
  ___()
Redigera och kör kod