BaşlayınÜcretsiz başlayın

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ş

Kursa Göz Atın

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'den hotttnesss_over_time adlı bir değişken oluştur.
    • artist_hotttnesss ve year alanlarını seç.
    • year sütununu numerice dönüştür.
    • Yılları decades kullanarak bölen, decade adlı yeni bir alan oluşturmak için ft_bucketizer() kullan.
    • Sonucu topla.
    • decade alanını decade_labels etiketleriyle bir faktöre dönüştür.
  • decade'e göre artist_hotttnesss için bir ggplot() ç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ış decade ve artist_hotttnesss değ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(___, ___)) +
  ___()  
Kodu Düzenle ve Çalıştır