Mulai sekarangMulai gratis

Mengubah variabel kontinu menjadi logika

Variabel logika bermanfaat karena sering kali lebih mudah memikirkan sesuatu dalam istilah "ya atau tidak" daripada numerik. Misalnya, jika seseorang bertanya, "Apakah Anda ingin secangkir teh?", jawaban ya atau tidak lebih tepat daripada "Ada kemungkinan 0,73 bahwa saya menginginkan secangkir teh". Ini juga memiliki penerapan nyata dalam data science. Sebagai contoh, tes diabetes dapat mengembalikan konsentrasi glukosa dalam plasma darah pasien sebagai sebuah angka. Yang sebenarnya Anda pedulikan adalah "Apakah pasien menderita diabetes?", sehingga Anda perlu mengonversi angka tersebut menjadi nilai logika, berdasarkan suatu ambang batas.

Di base R, ini cukup sederhana, menggunakan sesuatu seperti berikut:

threshold_mmol_per_l <- 7
has_diabetes <- plasma_glucose_concentration > threshold_mmol_per_l

Semua fungsi transformasi fitur di sparklyr memiliki antarmuka pengguna yang serupa. Tiga argumen pertama selalu berupa tibble Spark, string yang menamai kolom masukan, dan string yang menamai kolom keluaran. Artinya, mereka mengikuti pola ini.

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

Cara sparklyr untuk mengonversi variabel kontinu menjadi logika menggunakan ft_binarizer(). Contoh diabetes sebelumnya dapat ditulis ulang sebagai berikut. Perhatikan bahwa nilai ambang batas harus berupa angka, bukan string yang merujuk ke kolom dalam himpunan data.

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

Sejalan dengan filosofi Spark yang menggunakan DoubleType di mana-mana, keluaran dari ft_binarizer() sebenarnya bukan logika; melainkan numeric. Ini adalah pendekatan yang tepat agar Anda dapat terus bekerja di Spark dan melakukan transformasi lain, tetapi jika Anda ingin memproses data di R, Anda harus ingat untuk secara eksplisit mengonversi data menjadi logika. Berikut adalah pola kode yang umum.

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

Latihan ini menggunakan kolom yang namanya kurang sedap didengar, artist_hotttnesss, yang memberikan ukuran seberapa besar gaung media yang dimiliki artis pada saat himpunan data dibuat. Jika Anda ingin mempelajari lebih lanjut tentang cara membuat plot menggunakan paket ggplot2, silakan ikuti kursus Introduction to Data Visualization with ggplot2.

Latihan ini merupakan bagian dari kursus

Pengantar Spark dengan sparklyr di R

Lihat Kursus

Instruksi latihan

Koneksi Spark telah dibuat untuk Anda sebagai spark_conn. Sebuah tibble yang terhubung ke metadata trek yang disimpan di Spark telah didefinisikan sebelumnya sebagai track_metadata_tbl.

  • Buat variabel bernama hotttnesss dari track_metadata_tbl.
    • Pilih kolom artist_hotttnesss.
    • Gunakan ft_binarizer() untuk membuat kolom baru, is_hottt_or_nottt, yang bernilai true saat artist_hotttnesss lebih besar dari 0.5.
    • Kumpulkan hasilnya.
    • Konversikan kolom is_hottt_or_nottt menjadi bertipe logika.
  • Gambar plot batang ggplot() dari is_hottt_or_nottt.
    • Argumen pertama untuk ggplot() adalah argumen data, hotttnesss.
    • Argumen kedua untuk ggplot() adalah estetika, is_hottt_or_nottt yang dibungkus dalam aes().
    • Tambahkan geom_bar() untuk menggambar batang.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

# 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(___)) +
  ___()
Edit dan Jalankan Kode