Sürekli değişkenleri kategorik hale getirme (1)
Önceki fikrin genellemesi, birden fazla eşik kullanmaktır; yani sürekli bir değişkeni, histogramın yaptığı gibi, "kovalara" (veya "bin"lere) ayırırsın. Base-R'de bu iş için cut() kullanırsın. Örneğin, sigara içme alışkanlıklarına dair bir çalışmada, günde içilen tipik sigara sayısını alıp bunu bir faktöre dönüştürebilirsin.
smoking_status <- cut(
cigarettes_per_day,
breaks = c(0, 1, 10, 20, Inf),
labels = c("non", "light", "moderate", "heavy"),
right = FALSE
)
Bunun sparklyr karşılığı ise ft_bucketizer() kullanmaktır. Kod, ft_binarizer() ile benzer bir biçimdedir, ancak bu kez kesme noktalarını splits bağımsız değişkenine bir vektör olarak iletmen gerekir. Aynı örneğin sparklyr tarzında yazılmış hâli aşağıdadır.
smoking_data %>%
ft_bucketizer("cigarettes_per_day", "smoking_status", splits = c(0, 1, 10, 20, Inf))
Dikkat edilmesi gereken birkaç önemli nokta var. cut() içindeki breaks bağımsız değişkeninin, ft_bucketizer() içindeki splits ile aynı olduğunu fark etmiş olabilirsin. Sınırdaki değerlerin nasıl ele alındığında küçük bir fark vardır. cut() içinde varsayılan olarak üst (sağ) sınır her kovaya dahil edilir, sol sınır ise edilmez. ft_bucketizer() ise her kovaya alt (sol) sınırı dahil eder, sağ sınırı etmez. Bu da right = FALSE argümanı ile cut() çağırmaya denk gelir.
Bir istisna olarak, ft_bucketizer() en üst kovada her iki sınırdaki değerleri de dahil eder. Yani ft_bucketizer(), cut() kullanırken include.lowest = TRUE ayarını yapmaya da denktir.
Son olarak, cut() bir faktör döndürürken, ft_bucketizer() bir numeric vektör döndürür; ilk kovadaki değerler sıfır, ikinci kovadakiler bir, üçüncü kovadakiler iki vb. olur. Sonuçlarla R tarafında çalışmak istiyorsan, açıkça faktöre dönüştürmen gerekir. Bu yaygın bir kod kalıbıdır:
a_tibble %>%
ft_bucketizer("x", "x_buckets", splits = splits) %>%
collect() %>%
mutate(x_buckets = factor(x_buckets, labels = labels))
Bu egzersiz, kursun bir parçasıdır
R ile sparklyr kullanarak Spark’a Giriş
Egzersiz talimatları
spark_conn adıyla bir Spark bağlantısı senin için oluşturuldu. Spark'ta saklanan parça metaverilerine bağlı bir tibble track_metadata_tbl olarak önceden tanımlandı. decades 1920, 1930, …, 2020 şeklinde bir sayısal dizidir ve decade_labels bu on yılların metin açıklamalarıdır.
track_metadata_tbl'denhotttnesss_over_timeadlı bir değişken oluştur.artist_hotttnesssveyearalanlarını seç.yearsütunununumerice dönüştür.- Yılları
decadeskullanarak bölen,decadeadlı yeni bir alan oluşturmak içinft_bucketizer()kullan. - Sonucu topla.
decadealanınıdecade_labelsetiketleriyle bir faktöre dönüştür.
decade'e göreartist_hotttnesssiçin birggplot()çubuq grafiği çiz.ggplot()için ilk argüman veri argümanıdır:hotttnesss_over_time.ggplot()için ikinci argüman estetik olup,aes()içine alınmışdecadeveartist_hotttnesssdeğerlerini alır.- Çubukları çizmek için
geom_boxplot()ekle.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# track_metadata_tbl, decades, decade_labels have been pre-defined
track_metadata_tbl
decades
decade_labels
hotttnesss_over_time <- track_metadata_tbl %>%
# Select artist_hotttnesss and year
___ %>%
# Convert year to numeric
___ %>%
# Bucketize year to decade using decades vector
___ %>%
# Collect the result
___ %>%
# Convert decade to factor using decade_labels
___
# Draw a boxplot of artist_hotttnesss by decade
ggplot(___, aes(___, ___)) +
___()