Mengubah variabel kontinu menjadi kategorikal (2)
Kasus khusus dari transformasi sebelumnya adalah memotong variabel kontinu ke dalam bucket yang ditentukan oleh kuantil dari variabel tersebut. Penggunaan umum transformasi ini adalah untuk menganalisis respons survei atau skor ulasan. Jika Anda meminta orang menilai sesuatu dari satu hingga lima bintang, sering kali nilai tengahnya bukan tiga bintang. Dalam kasus seperti ini, akan berguna untuk membagi skor berdasarkan kuantil. Misalnya, Anda dapat membuat lima kelompok kuintil dengan membagi pada persentil ke-0, 20, 40, 60, 80, dan 100.
Cara base R untuk melakukan ini adalah cut() + quantile(). Padanannya di sparklyr menggunakan transformasi ft_quantile_discretizer(). Fungsi ini menerima argumen num_buckets, yang menentukan jumlah bucket. Cara perhitungan di base R dan sparklyr ditunjukkan bersama. Seperti sebelumnya, right = FALSE dan include.lowest diatur.
survey_response_group <- cut(
survey_score,
breaks = quantile(survey_score, c(0, 0.25, 0.5, 0.75, 1)),
labels = c("hate it", "dislike it", "like it", "love it"),
right = FALSE,
include.lowest = TRUE
)
survey_data %>%
ft_quantile_discretizer("survey_score", "survey_response_group", num_buckets = 4)
Seperti pada ft_bucketizer(), bin yang dihasilkan berupa angka yang dihitung mulai dari nol. Jika Anda ingin mengolahnya di R, ubahlah secara eksplisit menjadi factor.
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. duration_labels adalah vektor karakter yang mendeskripsikan lamanya durasi.
- Buat variabel bernama
familiarity_by_durationdaritrack_metadata_tbl.- Pilih kolom
durationdanartist_familiarity. - Gunakan
ft_quantile_discretizer()untuk membuat kolom baru,duration_bin, dari 5 bin kuantilduration. - Kumpulkan hasilnya.
- Ubah kolom
duration_binmenjadi faktor dengan labelduration_labels.
- Pilih kolom
- Gambar plot kotak
ggplot()dariartist_familiaritymenurutduration_bin.- Argumen pertama untuk
ggplot()adalah argumen data, yaitufamiliarity_by_duration. - Argumen kedua untuk
ggplot()adalah estetika, yang menggunakanduration_bindanartist_familiaritydibungkus dalamaes(). - Tambahkan
geom_boxplot()untuk menggambar batangnya.
- Argumen pertama untuk
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# track_metadata_tbl, duration_labels have been pre-defined
track_metadata_tbl
duration_labels
familiarity_by_duration <- track_metadata_tbl %>%
# Select duration and artist_familiarity
___ %>%
# Bucketize duration
___ %>%
# Collect the result
___ %>%
# Convert duration bin to factor
___
# Draw a boxplot of artist_familiarity by duration_bin
ggplot(___, aes(___, ___)) +
___()