Dplyr में एक को छोड़कर सभी कॉलमों को कैसे समूहित करें
आप R में dplyr पैकेज का उपयोग करके डेटा फ़्रेम में एक कॉलम को छोड़कर सभी को समूहित करने के लिए निम्नलिखित मूल सिंटैक्स का उपयोग कर सकते हैं:
df %>%
group_by(across(c( - this_column)))
यह विशेष उदाहरण this_column कहे जाने वाले कॉलम को छोड़कर डेटा फ़्रेम को सभी कॉलमों के आधार पर समूहित करता है।
ध्यान दें कि सूत्र में नकारात्मक चिह्न ( – ) dplyr को ग्रुप_बाय() फ़ंक्शन में उस विशेष कॉलम को बाहर करने के लिए कहता है।
निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस वाक्यविन्यास का उपयोग कैसे करें।
उदाहरण: dplyr में एक को छोड़कर सभी स्तंभों के आधार पर समूह बनाएं
मान लीजिए कि हमारे पास आर में निम्नलिखित डेटा फ्रेम है जिसमें विभिन्न बास्केटबॉल खिलाड़ियों के बारे में जानकारी है:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'), starter=c('Y', 'Y', 'Y', 'N', 'Y', 'N', 'N', 'N'), dots=c(99, 104, 119, 113)) #view data frame df team position starter points 1 AGY 99 2 AGY 104 3 AFY 119 4 AFN 113 5 BGY 99 6 BGN 104 7 BFN 119 8 BFN 113
अब मान लीजिए कि हम डेटा फ्रेम में अन्य सभी कॉलमों में समूहित पॉइंट कॉलम में अधिकतम मान ढूंढना चाहते हैं।
ऐसा करने के लिए हम निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:
library (dplyr) #group by all columns except points column and find max points df %>% group_by(across(c( - points))) %>% mutate(max_points = max(points)) # A tibble: 8 x 5 # Groups: team, position, starter [6] team position starter points max_points 1 AGY 99 104 2 AGY 104 104 3 AFY 119 119 4 AFN 113 113 5 BGY 99 99 6 BGN 104 104 7 BFN 119 119 8 BFN 113 119
परिणाम से हम देख सकते हैं:
- A के टीम मान, G के स्थान मान और Y के शुरुआती मान वाले सभी खिलाड़ियों के लिए अधिकतम अंक मान 104 था।
- A के टीम मान, F के स्थिति मान और Y के शुरुआती मान वाले सभी खिलाड़ियों के लिए अधिकतम अंक मान 119 था।
- A के टीम मान, F के स्थिति मान और N के शुरुआती मान वाले सभी खिलाड़ियों के लिए अधिकतम अंक मान 113 था।
और इसी तरह।
ध्यान दें कि यदि हम ग्रुप_बी() फ़ंक्शन में बिंदुओं को छोड़कर प्रत्येक कॉलम नाम टाइप करते हैं तो हमें भी वही परिणाम मिल सकता है:
library (dplyr) #group by all columns except points column and find max points df %>% group_by(across(c(team, position, starter))) %>% mutate(max_points = max(points)) # A tibble: 8 x 5 # Groups: team, position, starter [6] team position starter points max_points 1 AGY 99 104 2 AGY 104 104 3 AFY 119 119 4 AFN 113 113 5 BGY 99 99 6 BGN 104 104 7 BFN 119 119 8 BFN 113 119
यह पिछले उदाहरण के परिणाम से मेल खाता है।
हालाँकि, ध्यान दें कि अन्य सभी कॉलमों के नाम टाइप करने के बजाय ग्रुप_बी() फ़ंक्शन में पॉइंट कॉलम को बाहर करना बहुत आसान है।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि dplyr का उपयोग करके अन्य सामान्य कार्य कैसे करें:
Dplyr का उपयोग करके एक निश्चित स्ट्रिंग वाली पंक्तियों को कैसे फ़िल्टर करें
Dplyr का उपयोग करके सापेक्ष आवृत्तियों की गणना कैसे करें
dplyr का उपयोग करके समूह द्वारा पहली पंक्ति का चयन कैसे करें