शुरू करेंमुफ़्त में शुरू करें

सतत वैरिएबल्स को श्रेणियों में बदलना (1)

पिछले विचार का एक सामान्यीकरण यह है कि आप कई thresholds रखें; यानी आप किसी सतत वैरिएबल को "buckets" (या "bins") में बाँट दें, ठीक वैसा ही जैसा कोई histogram करता है। बेस-R में, आप यह काम करने के लिए cut() का उपयोग करेंगे। उदाहरण के लिए, धूम्रपान की आदतों पर एक अध्ययन में, आप प्रति दिन पिए गए सिगरेटों की सामान्य संख्या लें और उसे एक factor में बदल दें।

smoking_status <- cut(
  cigarettes_per_day,
  breaks = c(0, 1, 10, 20, Inf),
  labels = c("non", "light", "moderate", "heavy"),
  right  = FALSE
)

इसका sparklyr समकक्ष है ft_bucketizer() का उपयोग करना। कोड का प्रारूप ft_binarizer() जैसा ही है, लेकिन इस बार आपको splits आर्ग्यूमेंट में cut points का एक वेक्टर पास करना होगा। यही उदाहरण sparklyr शैली में यूँ लिखा जाएगा।

smoking_data %>%
  ft_bucketizer("cigarettes_per_day", "smoking_status", splits = c(0, 1, 10, 20, Inf))

ध्यान देने योग्य कई बातें हैं। आपने देखा होगा कि cut() का breaks आर्ग्यूमेंट ft_bucketizer() के splits आर्ग्यूमेंट जैसा ही है। सीमा पर स्थित मानों को संभालने के तरीके में हल्का-सा अंतर है। cut() में डिफॉल्ट रूप से ऊपरी (दाएँ) सीमा प्रत्येक बकेट में शामिल होती है, पर बाएँ नहीं। जबकि ft_bucketizer() निचली (बाएँ) सीमा को प्रत्येक बकेट में शामिल करता है, पर दाएँ नहीं। इसका मतलब है कि यह cut() को right = FALSE के साथ कॉल करने के बराबर है।

एक अपवाद यह है कि ft_bucketizer() सबसे ऊपर वाले बकेट के लिए दोनों सीमाओं पर स्थित मानों को शामिल करता है। इसलिए ft_bucketizer() cut() में include.lowest = TRUE सेट करने के भी बराबर है।

अंत में यह ध्यान दें कि जहाँ cut() एक factor लौटाता है, वहीं ft_bucketizer() एक numeric वेक्टर लौटाता है, जिसमें पहले बकेट के मान शून्य, दूसरे के एक, तीसरे के दो, और आगे ऐसे ही होते हैं। अगर आप R में परिणामों पर काम करना चाहते हैं, तो आपको इसे स्पष्ट रूप से factor में बदलना होगा। यह एक सामान्य कोड पैटर्न है:

a_tibble %>%
  ft_bucketizer("x", "x_buckets", splits = splits) %>%
  collect() %>%
  mutate(x_buckets = factor(x_buckets, labels = labels))

यह अभ्यास पाठ्यक्रम का हिस्सा है

R में sparklyr के साथ Spark परिचय

पाठ्यक्रम देखें

अभ्यास निर्देश

आपके लिए spark_conn के रूप में एक Spark कनेक्शन बनाया गया है। Spark में संग्रहीत ट्रैक मेटाडेटा से जुड़ा एक tibble पहले से track_metadata_tbl नाम से परिभाषित है। decades एक numeric अनुक्रम है: 1920, 1930, …, 2020, और decade_labels उन दशकों का टेक्स्ट विवरण है।

  • track_metadata_tbl से hotttnesss_over_time नाम का एक वैरिएबल बनाएँ।
    • artist_hotttnesss और year फ़ील्ड्स चुनें।
    • year कॉलम को numeric में बदलें।
    • ft_bucketizer() का उपयोग करके decade नाम का नया फ़ील्ड बनाएँ, जो decades का उपयोग करके years को बाँटता है।
    • परिणाम collect करें।
    • decade फ़ील्ड को decade_labels लेबल्स के साथ factor में बदलें।
  • decade के हिसाब से artist_hotttnesss का ggplot() बार प्लॉट बनाएँ।
    • ggplot() का पहला आर्ग्यूमेंट data आर्ग्यूमेंट hotttnesss_over_time है।
    • ggplot() का दूसरा आर्ग्यूमेंट aesthetic है, जो aes() में लिपटे decade और artist_hotttnesss लेता है।
    • बार्स ड्रॉ करने के लिए geom_boxplot() जोड़ें।

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

# 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(___, ___)) +
  ___()  
कोड संपादित करें और चलाएँ