ग्रुप्स: संगीत के लिए बढ़िया, डेटा के लिए भी
किसी भी विश्लेषण में एक आम ज़रूरत होती है कि डेटा के हर समूह के लिए summary statistics निकाली जाएँ। उदाहरण के लिए, आप महीने या क्षेत्र के अनुसार अपनी sales revenue जानना चाह सकते हैं। R में अपने डेटा को समूहों में बाँटना, हर समूह पर कोई summary statistic लगाना, और नतीजों को एक ही डेटा स्ट्रक्चर में जोड़ना, इस पूरी प्रक्रिया को "split-apply-combine" कहा जाता है। यह विचार काफ़ी पुराना है: SQL में GROUP BY स्टेटमेंट दशकों से है। "map-reduce" भी मिलता-जुलता सिद्धांत है, जहाँ "map" मोटे तौर पर "split" और "apply" के समान है, और "reduce" यानी "combine" करना। dplyr/sparklyr का तरीका यह है कि आप group_by() का उपयोग mutate() या summarize() से पहले करें। यह उन कॉलमों के unquoted नाम लेता है जिनके अनुसार ग्रुप करना है। उदाहरण के लिए, कॉलम x का mean निकालने के लिए, कॉलम grp1 और grp2 के मानों के हर संयोजन पर, आप यह लिखेंगे:
a_tibble %>%
group_by(grp1, grp2) %>%
summarize(mean_x = mean(x))
ध्यान दें कि group_by() में दिए गए कॉलम आम तौर पर श्रेणीगत (categorical) वैरिएबल होने चाहिए। उदाहरण के लिए, अगर आप ऊँचाई के अनुपात में लोगों का औसत वज़न निकालना चाहते हैं, तो ऊँचाई पर ग्रुप करना समझदारी नहीं होगी, क्योंकि लगभग हर व्यक्ति की ऊँचाई अलग होती है। हालाँकि, आप cut() का उपयोग करके ऊँचाइयों को अलग-अलग श्रेणियों में बदल सकते हैं और हर श्रेणी का mean वज़न निकाल सकते हैं।
यह अभ्यास पाठ्यक्रम का हिस्सा है
R में sparklyr के साथ Spark परिचय
अभ्यास निर्देश
आपके लिए spark_conn नाम से एक Spark कनेक्शन बनाया गया है। Spark में संग्रहीत ट्रैक मेटाडेटा से जुड़ा एक tibble track_metadata_tbl के रूप में पहले से परिभाषित है।
track_metadataकी सामग्री कोartist_nameके आधार पर group करें, फिर:durationका groupwise mean नए कॉलमmean_durationके रूप में summarize करें।- परिणामों को
duration_by_artistमें असाइन करें।
mean_durationके ascending क्रम में arrange करके उन कलाकारों को खोजें जिनके गाने सबसे छोटे हैं।- इसी तरह, descending क्रम में arrange करके उन कलाकारों को ढूँढ़ें जिनके गाने सबसे लंबे हैं।
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# track_metadata_tbl has been pre-defined
track_metadata_tbl
duration_by_artist <- track_metadata_tbl %>%
# Group by artist
___ %>%
# Calc mean duration
___
duration_by_artist %>%
# Sort by ascending mean duration
___
duration_by_artist %>%
# Sort by descending mean duration
___