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
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
hotttnesssdaritrack_metadata_tbl.- Pilih kolom
artist_hotttnesss. - Gunakan
ft_binarizer()untuk membuat kolom baru,is_hottt_or_nottt, yang bernilai true saatartist_hotttnessslebih besar dari 0.5. - Kumpulkan hasilnya.
- Konversikan kolom
is_hottt_or_notttmenjadi bertipe logika.
- Pilih kolom
- Gambar plot batang
ggplot()dariis_hottt_or_nottt.- Argumen pertama untuk
ggplot()adalah argumen data,hotttnesss. - Argumen kedua untuk
ggplot()adalah estetika,is_hottt_or_notttyang dibungkus dalamaes(). - Tambahkan
geom_bar()untuk menggambar batang.
- Argumen pertama untuk
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(___)) +
___()