R एग्रीगेट फ़ंक्शन: summarise() और group_by() का उदाहरण

⚡ स्मार्ट सारांश

R में dplyr के साथ एग्रीगेट फ़ंक्शन कई पंक्तियों को प्रति समूह एक सांख्यिकी में समेकित करता है। यह विधि लाहमन के बैटिंग डेटा पर group_by() और summarise() फ़ंक्शन का उपयोग करके 104,324 प्रेक्षणों के लिए माध्य, योग, प्रसार, गणना और स्थितिगत मानों की गणना करती है।

  • 🧮 मुख्य क्रिया: summarise(df, name = function(column)) एक पंक्ति लौटाता है, और group_by() पहले उसे प्रति समूह एक पंक्ति में बदल देता है।
  • 📊 सांख्यिकीय परिवार: माध्य और माध्यिका केंद्र का वर्णन करते हैं, मानक विचलन और अंतर-मानक विचलन फैलाव का वर्णन करते हैं, और न्यूनतम और अधिकतम सीमा का वर्णन करते हैं।
  • 🔢 गिनती: n() वर्तमान समूह में पंक्तियों की गणना करता है और n_distinct() इसके भीतर अद्वितीय मानों की गणना करता है।
  • 📍 स्थितिगत सहायक: first(), last(), और nth() उदाहरणtracप्रत्येक समूह से एक विशिष्ट अवलोकन।
  • 🔄 बहु-स्तंभ कार्य: across() फ़ंक्शन प्रत्येक कॉलम के लिए कोड को दोहराए बिना एक ही फ़ंक्शन को कई कॉलम पर लागू करता है।
  • 🔓 Grouping स्वच्छता: किसी भी गणना को दोबारा करने से पहले हमेशा ungroup() फ़ंक्शन को कॉल करें।

आर एग्रीगेट फ़ंक्शन

इस ट्यूटोरियल में प्रयुक्त डेटासेट

किसी वेरिएबल का सारांश निकालने से आपको डेटा का प्रारंभिक अंदाजा मिल जाता है, और समूह के आधार पर उसका सारांश निकालने से आपको यह समझने में काफी मदद मिलती है कि मान किस प्रकार वितरित हैं। यह ट्यूटोरियल दिखाता है कि dplyr लाइब्रेरी का उपयोग करके डेटासेट को समूह के आधार पर कैसे एकत्रित किया जाए।

इस ट्यूटोरियल में लाहमन बैटिंग डेटासेट का उपयोग किया गया है। इसे इम्पोर्ट करने और रखने के बाद...ping नीचे सूचीबद्ध केवल नौ कॉलमों को शामिल करने पर, कार्यशील डेटा फ्रेम में 104,324 अवलोकन और 9 चर मौजूद हैं:

  • playerID: खिलाड़ी आईडी कोड. फ़ैक्टर
  • yearID: वर्ष. फ़ैक्टर
  • टीमआईडी: टीम. फैक्टर
  • एलजीआईडी: लीग। कारक: एए अल एफएल एनएल पीएल यूए
  • एबी: बल्लेबाजी पर। संख्यात्मक
  • G: खेल: एक खिलाड़ी द्वारा खेले गए खेलों की संख्या। संख्यात्मक
  • आर: रन. संख्यात्मक
  • एचआर: होमरन्स। संख्यात्मक
  • SH: बलिदान हिट। संख्यात्मक

सारांश तैयार करने से पहले, आप डेटा तैयार करने के लिए निम्नलिखित चरण अपनाएंगे:

  • चरण 1: डेटा आयात करें
  • चरण 2: प्रासंगिक चर का चयन करें
  • चरण 3: डेटा को सॉर्ट करें
library(dplyr)

# Step 1
data <- read.csv("https://raw.githubusercontent.com/guru99-edu/R-Programming/master/lahman-batting.csv") %>%

# Step 2
select(c(playerID, yearID, AB, teamID, lgID, G, R, HR, SH))  %>% 

# Step 3
arrange(playerID, teamID, yearID)

डेटासेट आयात करते समय एक अच्छा अभ्यास यह है कि डेटासेट की संरचना के बारे में विचार प्राप्त करने के लिए झलक() फ़ंक्शन का उपयोग करें।

# Structure of the data
glimpse(data)

आउटपुट:

Observations: 104,324
Variables: 9
$ playerID <fctr> aardsda01, aardsda01, aardsda01, aardsda01, aardsda01, a...
$ yearID   <int> 2015, 2008, 2007, 2006, 2012, 2013, 2009, 2010, 2004, 196...
$ AB       <int> 1, 1, 0, 2, 0, 0, 0, 0, 0, 603, 600, 606, 547, 516, 495, ...
$ teamID   <fctr> ATL, BOS, CHA, CHN, NYA, NYN, SEA, SEA, SFN, ATL, ATL, A...
$ lgID     <fctr> NL, AL, AL, NL, AL, NL, AL, AL, NL, NL, NL, NL, NL, NL, ...
$ G        <int> 33, 47, 25, 45, 1, 43, 73, 53, 11, 158, 155, 160, 147, 15...
$ R        <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 113, 84, 100, 103, 95, 75...
$ HR       <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 39, 29, 44, 38, 47, 34, 40...
$ SH       <int> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, ...

सारांशित करें()

summarise() का वाक्यविन्यास बुनियादी है और dplyr लाइब्रेरी में शामिल अन्य क्रियाओं के अनुरूप है।

summarise(df, variable_name=condition) 
arguments: 
- `df`: Dataset used to construct the summary statistics 
- `variable_name=condition`: Formula to create the new variable

नीचे दिए गए कोड को देखें:

summarise(data, mean_run =mean(R))

Code व्याख्या

  • summarise(data, mean_run = mean(R)): mean_run नामक एक चर बनाता है जो डेटासेट डेटा से चलाए गए कॉलम का औसत है।

आउटपुट:

##   mean_run
## 1 19.20114

आप जितने चाहें उतने चर जोड़ सकते हैं। आप खेले गए औसत खेल और औसत बलिदान हिट लौटाते हैं।

summarise(data, mean_games = mean(G),
    mean_SH = mean(SH, na.rm = TRUE))

Code व्याख्या

  • mean_SH = mean(SH, na.rm = TRUE): दूसरे चर का सारांश बनाएँ। आपने na.rm = TRUE सेट किया है क्योंकि SH कॉलम में कुछ अवलोकन गायब हैं।

आउटपुट:

##   mean_games  mean_SH
## 1   51.98361 2.340085

group_by() बनाम no group_by()

अकेले उपयोग किए जाने पर, summarise() पूरे डेटा फ्रेम को एक ही पंक्ति में समेट देता है, जैसा कि ऊपर दिए गए उदाहरणों में दिखाया गया है। इसकी असली शक्ति तब सामने आती है जब आप इसमें group_by() जोड़ते हैं: दुत्कार इसके बाद लाइब्रेरी प्रत्येक समूह पर अलग-अलग वही गणना लागू करती है और प्रति समूह एक पंक्ति लौटाती है।

ध्यान दें कि, group_by अन्य सभी क्रियाओं (अर्थात mutate(), filter(), arrange(), ...) के साथ पूरी तरह से काम करता है।

जब आपके पास एक से ज़्यादा चरण हों तो पाइपलाइन ऑपरेटर का इस्तेमाल करना सुविधाजनक होता है। आप बेसबॉल लीग के हिसाब से औसत होमरन की गणना कर सकते हैं।

data %>%
	group_by(lgID) %>%
	summarise(mean_run = mean(HR))

Code व्याख्या

  • डेटा: सारांश सांख्यिकी बनाने के लिए उपयोग किया जाने वाला डेटासेट
  • group_by(lgID): सारांशित करने से पहले lgID के मानों के आधार पर डेटा को विभाजित करें
  • summarise(mean_run = mean(HR)): औसत होमरन की गणना करें

आउटपुट:

## 
# A tibble: 7 x 2
##     lgID  mean_run
##   <fctr>     <dbl>
## 1     AA 0.9166667
## 2     AL 3.1270988
## 3     FL 1.3131313
## 4     NL 2.8595953
## 5     PL 2.5789474
## 6     UA 0.6216216
## 7   <NA> 0.2867133	

यह पाइप फ़ंक्शन ggplot() के साथ भी काम करता है, इसलिए कच्चे डेटा से लेकर तैयार चार्ट तक की पूरी प्रक्रिया एक ही वाक्य में समाहित हो जाती है। नीचे दिया गया कोड group_by(), summarise() और ggplot() को मिलाकर प्रत्येक लीग के औसत होम रन को बार चार्ट के रूप में दर्शाता है।

आप निम्नलिखित चरण अपनाएंगे:

  • चरण 1: डेटा फ़्रेम चुनें
  • चरण 2: डेटा समूहित करें
  • चरण 3: डेटा का सारांश बनाएँ
  • चरण 4: सारांश आँकड़े प्लॉट करें
library(ggplot2)
# Step 1
data %>% 
#Step 2
group_by(lgID) %>% 
#Step 3
summarise(mean_home_run = mean(HR)) %>% 
#Step 4
ggplot(aes(x = lgID, y = mean_home_run, fill = lgID)) +
    geom_bar(stat = "identity") +
    theme_classic() +
    labs(
        x = "baseball league",
        y = "Average home run",
        title = paste(
            "Example group_by() with summarise()"
        )
    )

आउटपुट:

समूह_द्वारा उदाहरण सारांश के साथ

summarise() फ़ंक्शन के अंदर आप इन फ़ंक्शन का उपयोग कर सकते हैं

क्रिया summarise() R में लगभग सभी फ़ंक्शन के साथ संगत है। यहां उपयोगी फ़ंक्शन की एक छोटी सूची दी गई है, जिन्हें आप summarise() के साथ उपयोग कर सकते हैं:

उद्देश्य समारोह विवरण
बुनियादी अर्थ() सदिश x का औसत
माध्यिका() सदिश x का माध्यिका
योग () सदिश x का योग
परिवर्तन एसडी() सदिश x का मानक विचलन
आईक्यूआर() सदिश x का अंतरचतुर्थक
रेंज मिनट () सदिश x का न्यूनतम मान
अधिकतम () सदिश x का अधिकतम
मात्रा() सदिश x का क्वांटाइल
पद पहला() group_by() के साथ प्रयोग करें समूह का पहला अवलोकन
अंतिम() group_by() के साथ प्रयोग करें। समूह का अंतिम अवलोकन
एनएचटी() group_by() के साथ प्रयोग करें। समूह का nवाँ अवलोकन
गिनती एन() group_by() के साथ प्रयोग करें। पंक्तियों की संख्या गिनें
n_विशिष्ट() group_by() के साथ प्रयोग करें। अलग-अलग प्रेक्षणों की संख्या गिनें

नीचे दिए गए अनुभाग ऊपर दी गई तालिका में प्रत्येक फ़ंक्शन के लिए एक उदाहरण के माध्यम से समझाते हैं। यदि आप पाइप और अन्य क्रियाओं से अपरिचित हैं, तो इससे शुरुआत करें। चयन, फ़िल्टर और व्यवस्था ट्यूटोरियल.

बुनियादी काम

पिछले उदाहरण में, आपने सारांश सांख्यिकी को डेटा फ़्रेम में संग्रहीत नहीं किया था।

आप दो चरणों में सारांश से डेटा फ्रेम उत्पन्न कर सकते हैं:

  • चरण 1: आगे उपयोग के लिए डेटा फ़्रेम को संग्रहीत करें
  • चरण 2: लाइन प्लॉट बनाने के लिए डेटासेट का उपयोग करें

चरण 1) आप प्रत्येक वर्ष खेले गए खेलों की औसत संख्या की गणना करते हैं।

## Mean
ex1 <- data %>%
	group_by(yearID) %>%
	summarise(mean_game_year = mean(G))
head(ex1)

Code व्याख्या

  • बल्लेबाजी डेटासेट का सारांश सांख्यिकी डेटा फ्रेम ex1 में संग्रहीत किया जाता है।

आउटपुट:

## # A tibble: 6 x 2
##   yearID mean_game_year
##    <int>          <dbl>
## 1   1871       23.42308
## 2   1872       18.37931
## 3   1873       25.61538
## 4   1874       39.05263
## 5   1875       28.39535
## 6   1876       35.90625	

चरण 2) आप सारांश सांख्यिकी को एक रेखाचित्र के माध्यम से दिखाते हैं और प्रवृत्ति देखते हैं।

# Plot the graph
ggplot(ex1, aes(x = yearID, y = mean_game_year)) +
    geom_line() +
    theme_classic() +
    labs(
        x = "Year",
        y = "Average games played",
        title = paste(
            "Average games played from 1871 to 2016"
        )
    )

आउटपुट:

मूल फ़ंक्शन उदाहरण

सबसेटिंग

फ़ंक्शन summarise() सबसेटिंग के साथ संगत है।

## Subsetting + Median
data %>%
group_by(lgID) %>%
summarise(median_at_bat_league = median(AB), 
	#Compute the median without the zero 
	median_at_bat_league_no_zero = median(AB[AB > 0]))

Code व्याख्या

  • median_at_bat_league_no_zero = median(AB[AB > 0]): चर AB में 0 के बहुत सारे हैं। आप की माध्यिका की तुलना कर सकते हैं बल्ले पर 0 के साथ और बिना चर.

आउटपुट:

## # A tibble: 7 x 3
##     lgID median_at_bat_league median_at_bat_league_no_zero
##   <fctr>                <dbl>                        <dbl>
## 1     AA                  130                          131
## 2     AL                   38                           85
## 3     FL                   88                           97
## 4     NL                   56                           67
## 5     PL                  238                          238
## 6     UA                   35                           35
## 7   <NA>                  101                          101	

राशि

चर को एकत्रित करने के लिए एक अन्य उपयोगी फ़ंक्शन sum() है।

आप यह देख सकते हैं कि किस लीग में अधिक होम रन हैं।

## Sum
data %>%
	group_by(lgID) %>%
	summarise(sum_homerun_league = sum(HR))

आउटपुट:

## # A tibble: 7 x 2
##     lgID sum_homerun_league
##   <fctr>              <int>
## 1     AA                341
## 2     AL              29426
## 3     FL                130
## 4     NL              29817
## 5     PL                 98
## 6     UA                 46
## 7   <NA>                 41	

मानक विचलन

डेटा में प्रसार की गणना R में मानक विचलन या sd() के साथ की जाती है।

# Spread
data %>%
	group_by(teamID) %>%
	summarise(sd_at_bat_league = sd(HR))

आउटपुट:

## # A tibble: 148 x 2
##    teamID sd_at_bat_league
##    <fctr>            <dbl>
##  1    ALT               NA
##  2    ANA        8.7816395
##  3    ARI        6.0765503
##  4    ATL        8.5363863
##  5    BAL        7.7350173
##  6    BFN        1.3645163
##  7    BFP        0.4472136
##  8    BL1        0.6992059
##  9    BL2        1.7106757
## 10    BL3        1.0000000
## # ... with 138 more rows		

होम रन का अंतर टीमों के बीच काफी भिन्न होता है, और ALT NA लौटाता है क्योंकि उस टीम की केवल एक पंक्ति है, इसलिए कोई मानक विचलन की गणना नहीं की जा सकती है।

न्यूनतम और अधिकतम

आप min() और max() फ़ंक्शन के साथ किसी वेक्टर के न्यूनतम और अधिकतम मान तक पहुँच सकते हैं।

नीचे दिया गया कोड किसी खिलाड़ी द्वारा एक सत्र में खेले गए खेलों की न्यूनतम और अधिकतम संख्या बताता है।

# Min and max
data %>%
	group_by(playerID) %>%
	summarise(min_G = min(G),
    max_G = max(G))

आउटपुट:

## # A tibble: 10,395 x 3
##     playerID min_G max_G
##       <fctr>       <int>
##  1 aardsda01    53    73
##  2 aaronha01   120   156
##  3  aasedo01    24    66
##  4  abadfe01    18    18
##  5 abadijo01    11    11
##  6 abbated01     3   153
##  7 abbeybe01    11    11
##  8 abbeych01    80   132
##  9 abbotgl01     5    23
## 10 abbotji01    13    29
## # ... with 10,385 more rows

गिनती

प्रत्येक समूह में प्रेक्षणों की गणना करना हमेशा उपयोगी होता है। R में, n() फ़ंक्शन वर्तमान समूह में पंक्तियों की संख्या लौटाता है।

उदाहरण के लिए, नीचे दिया गया कोड प्रत्येक खिलाड़ी द्वारा खेले गए वर्षों की संख्या की गणना करता है।

# count observations
data %>%
	group_by(playerID) %>%
	summarise(number_year = n()) %>%
	arrange(desc(number_year))

आउटपुट:

## # A tibble: 10,395 x 2
##     playerID number_year
##       <fctr>       <int>
##  1 pennohe01          11
##  2 joosted01          10
##  3 mcguide01          10
##  4  rosepe01          10
##  5 davisha01           9
##  6 johnssi01           9
##  7  kaatji01           9
##  8 keelewi01           9
##  9 marshmi01           9
## 10 quirkja01           9
## # ... with 10,385 more rows

प्रथम और अंतिम

आप किसी समूह का प्रथम, अंतिम या nवां स्थान चुन सकते हैं।

उदाहरण के लिए, आप प्रत्येक खिलाड़ी का पहला और अंतिम वर्ष जान सकते हैं।

# first and last
data %>%
	group_by(playerID) %>%
	summarise(first_appearance = first(yearID),
		last_appearance = last(yearID))

आउटपुट:

## # A tibble: 10,395 x 3
##     playerID first_appearance last_appearance
##       <fctr>            <int>           <int>
##  1 aardsda01             2009            2010
##  2 aaronha01             1973            1975
##  3  aasedo01             1986            1990
##  4  abadfe01             2016            2016
##  5 abadijo01             1875            1875
##  6 abbated01             1905            1897
##  7 abbeybe01             1894            1894
##  8 abbeych01             1895            1897
##  9 abbotgl01             1973            1979
## 10 abbotji01             1992            1996
## # ... with 10,385 more rows

nवां अवलोकन

nth() फ़ंक्शन first() और last() का पूरक है। यह प्रत्येक समूह के भीतर आपके द्वारा दिए गए इंडेक्स पर मौजूद ऑब्ज़र्वेशन को लौटाता है।

उदाहरण के लिए, आप केवल उस दूसरे वर्ष को फ़िल्टर कर सकते हैं जिसमें टीम खेली थी।

# nth
data %>%
	group_by(teamID) %>%
	summarise(second_game = nth(yearID, 2)) %>%
	arrange(second_game)

आउटपुट:

## # A tibble: 148 x 2
##    teamID second_game
##    <fctr>       <int>
##  1    BS1        1871
##  2    CH1        1871
##  3    FW1        1871
##  4    NY2        1871
##  5    RC1        1871
##  6    BR1        1872
##  7    BR2        1872
##  8    CL1        1872
##  9    MID        1872
## 10    TRO        1872
## # ... with 138 more rows

अवलोकनों की विशिष्ट संख्या

n() फ़ंक्शन वर्तमान समूह में पंक्तियों की संख्या लौटाता है। इससे संबंधित n_distinct() फ़ंक्शन अद्वितीय मानों की गणना करता है।

अगले उदाहरण में, आप सभी अवधियों के दौरान एक टीम द्वारा भर्ती किये गए खिलाड़ियों की कुल संख्या जोड़ते हैं।

# distinct values
data %>%
	group_by(teamID) %>%
	summarise(number_player = n_distinct(playerID)) %>%
	arrange(desc(number_player))

Code व्याख्या

  • group_by(teamID): टीम के आधार पर समूह बनाएं
  • सारांश(number_player = n_विशिष्ट(playerID)): प्रत्येक टीम में अलग-अलग खिलाड़ियों की संख्या गिनें
  • व्यवस्थित करें(desc(number_player)): खिलाड़ियों की संख्या के अनुसार डेटा को क्रमबद्ध करें

आउटपुट:

## # A tibble: 148 x 2
##    teamID number_player
##    <fctr>         <int>
##  1    CHN           751
##  2    SLN           729
##  3    PHI           699
##  4    PIT           683
##  5    CIN           679
##  6    BOS           647
##  7    CLE           646
##  8    CHA           636
##  9    DET           623
## 10    NYA           612
## # ... with 138 more rows

एकाधिक समूह

एक सारांश सांख्यिकी को अनेक समूहों के बीच साकार किया जा सकता है।

# Multiple groups
data %>%
	group_by(yearID, teamID) %>%
	summarise(mean_games = mean(G)) %>%
	arrange(desc(teamID, yearID))

Code व्याख्या

  • group_by(yearID, teamID): वर्ष के अनुसार समूह बनाएं और टीम
  • summarise(mean_games = mean(G)): खेले गए खेलों की औसत संख्या
  • व्यवस्थित करें(desc(teamID, yearID)): टीम और वर्ष के अनुसार डेटा को क्रमबद्ध करें

आउटपुट:

## # A tibble: 2,829 x 3
## # Groups:   yearID [146]
##    yearID teamID mean_games
##     <int> <fctr>      <dbl>
##  1   1884    WSU   20.41667
##  2   1891    WS9   46.33333
##  3   1886    WS8   22.00000
##  4   1887    WS8   51.00000
##  5   1888    WS8   27.00000
##  6   1889    WS8   52.42857
##  7   1884    WS7    8.00000
##  8   1875    WS6   14.80000
##  9   1873    WS5   16.62500
## 10   1872    WS4    4.20000
## # ... with 2,819 more rows

फ़िल्टर

इससे पहले कि आप कोई ऑपरेशन करना चाहें, आप डेटासेट को फ़िल्टर कर सकते हैं। डेटासेट 1871 से शुरू होता है, और विश्लेषण के लिए 1980 से पहले के वर्षों की ज़रूरत नहीं होती।

# Filter
data %>%
	filter(yearID > 1980) %>%
	group_by(yearID) %>%
	summarise(mean_game_year = mean(G))

Code व्याख्या

  • फ़िल्टर(yearID > 1980): केवल प्रासंगिक वर्ष (अर्थात 1980 के बाद) दिखाने के लिए डेटा को फ़िल्टर करें
  • group_by(yearID): वर्ष के अनुसार समूह बनाएं
  • summarise(mean_game_year = mean(G)): डेटा को सारांशित करें

आउटपुट:

## # A tibble: 36 x 2
##    yearID mean_game_year
##     <int>          <dbl>
##  1   1981       40.64583
##  2   1982       56.97790
##  3   1983       60.25128
##  4   1984       62.97436
##  5   1985       57.82828
##  6   1986       58.55340
##  7   1987       48.74752
##  8   1988       52.57282
##  9   1989       58.16425
## 10   1990       52.91556
## # ... with 26 more rows

असमूहीकृत

अंत में, आपको ग्राउंड को हटाना होगा।ping किसी गणना के स्तर को बदलने से पहले। ungroup() फ़ंक्शन के बिना, दूसरा summarise() फ़ंक्शन अभी भी प्रत्येक खिलाड़ी के लिए काम करेगा।

# Ungroup the data
data %>%
	filter(HR > 0) %>%
	group_by(playerID) %>%
	summarise(average_HR_game = sum(HR) / sum(G)) %>%
	ungroup() %>%
	summarise(total_average_homerun = mean(average_HR_game))

Code व्याख्या

  • फ़िल्टर(HR >0) : शून्य होमरन को बाहर करें
  • group_by(playerID): खिलाड़ी के अनुसार समूह बनाएं
  • summarise(average_HR_game = sum(HR)/sum(G)): खिलाड़ी द्वारा औसत होमरन की गणना करें
  • ungroup(): समूह को हटाएँping
  • सारांश (कुल_औसत_होमरन = औसत(औसत_एचआर_गेम)): डेटा को सारांशित करें

आउटपुट:

## # A tibble: 1 x 1
##   total_average_homerun
##                   <dbl>
## 1            0.06882226	

across() फ़ंक्शन का उपयोग करके एकाधिक कॉलम को सारांशित कैसे करें

ऊपर दिए गए प्रत्येक उदाहरण में एक बार में एक कॉलम का नाम दिया गया है। जब एक ही सांख्यिकी की आवश्यकता कई कॉलमों के लिए होती है, तो across() फ़ंक्शन इसे एक ही कॉल में उन सभी पर लागू करता है।

# One function, several columns
data %>%
    group_by(lgID) %>%
    summarise(across(c(R, HR, G), mean, .names = "mean_{.col}"))

# Every numeric column at once
data %>%
    group_by(lgID) %>%
    summarise(across(where(is.numeric), mean, na.rm = TRUE))

# Several functions applied to several columns
data %>%
    group_by(teamID) %>%
    summarise(across(c(R, HR), list(avg = mean, total = sum)))

तीन तर्क व्यवहार को नियंत्रित करते हैं:

  • .कॉलम: वे कॉलम जिन पर कार्रवाई करनी है, जिन्हें select() के समान ही सहायकों के साथ लिखा गया है, जिसमें where(is.numeric) भी शामिल है।
  • .एफएनएस: प्रत्येक कॉलम पर लागू करने के लिए एक फ़ंक्शन, या फ़ंक्शन की एक नामित सूची।
  • .नामआउटपुट के लिए नामकरण पैटर्न, जहां {.col} कॉलम का नाम है और {.fn} फ़ंक्शन का नाम है।

dplyr 1.0.0 में across() ने पुराने summarise_all(), summarise_at() और summarise_if() हेल्पर को बदल दिया है। ये अभी भी चलते हैं लेकिन अप्रचलित हो चुके हैं, इसलिए नए कोड में across() का उपयोग किया जाना चाहिए।

summarise() फ़ंक्शन में होने वाली आम त्रुटियाँ और उन्हें ठीक करने के तरीके

चार समस्याएं अधिकांश असफल एकत्रीकरणों के लिए जिम्मेदार हैं।

  • परिणाम NA है। यदि कोई मान अनुपस्थित हो तो mean() और sum() NA लौटाते हैं। ऊपर दिए गए mean_SH उदाहरण की तरह na.rm = TRUE जोड़ें।
  • “summarise() ने आउटपुट को समूहीकृत कर दिया है” संदेश। Grouping दो चरों द्वारा परिणाम को पहले चर के आधार पर समूहीकृत किया जाता है। समूह को हटाने के लिए .groups = “drop” पास करें।pingया फिर बाद में ungroup() को कॉल करें।
  • बाद में की गई गणना से गलत स्तर प्राप्त होता है। डेटा फ्रेम तब तक समूहीकृत रहता है जब तक आप उसे असमूहीकृत नहीं कर देते, इसलिए प्रत्येक समूह के लिए दूसरा summarise() फ़ंक्शन चलता है। ungroup() का उदाहरण ठीक यही दर्शाता है।
  • आउटपुट में अपेक्षा से अधिक पंक्तियाँ हैं। summarise() प्रत्येक समूह के लिए एक पंक्ति लौटाता है, इसलिए एक अनपेक्षित समूहping वेरिएबल आउटपुट को गुणा करता है। किसी भी टिबल के ऊपर छपी "ग्रुप्स:" लाइन को देखें।
# Drop the grouping as part of the call
data %>%
    group_by(yearID, teamID) %>%
    summarise(mean_games = mean(G), .groups = "drop")

R में summarise() फ़ंक्शन: संदर्भ

समूह के आधार पर सारांश प्राप्त करने के लिए, पहले डेटा को विभाजित करें:

# group by X1, X2, X3
group_by(df, X1, X2, X3)

और ग्राउंड को हटा देंping जब गणना का स्तर बदलता है:

ungroup(df)

नीचे दी गई तालिका में इस ट्यूटोरियल में summarise() फ़ंक्शन के साथ उपयोग किए गए सभी फ़ंक्शन सूचीबद्ध हैं:

विधि समारोह Code
मतलब मतलब
summarise(df, mean_x1 = mean(x1))
मंझला मंझला
summarise(df, median_x1 = median(x1))
योग योग
summarise(df, sum_x1 = sum(x1))
मानक विचलन sd
summarise(df, sd_x1 = sd(x1))
अन्तःचतुर्थक आईक्यूआर
summarise(df, interquartile_x1 = IQR(x1))
न्यूनतम मिनट
summarise(df, minimum_x1 = min(x1))
अधिकतम मैक्स
summarise(df, maximum_x1 = max(x1))
मात्रात्मक मात्रात्मक
summarise(df, quantile_x1 = quantile(x1, probs = 0.75))
पहला अवलोकन प्रथम
summarise(df, first_x1 = first(x1))
अंतिम अवलोकन पिछली बार
summarise(df, last_x1 = last(x1))
nवां अवलोकन n वें
summarise(df, nth_x1 = nth(x1, 2))
घटना की संख्या n
summarise(df, n_x1 = n())
अलग-अलग घटनाओं की संख्या n_विशिष्ट
summarise(df, n_distinct_x1 = n_distinct(x1))

अक्सर पूछे जाने वाले प्रश्न

summarise() फ़ंक्शन प्रत्येक समूह को सांख्यिकी की एक पंक्ति में समेकित करता है। mutate() फ़ंक्शन प्रत्येक पंक्ति को बनाए रखता है और एक नया कॉलम जोड़ता है। mutate() फ़ंक्शन का उपयोग तब करें जब समूह सांख्यिकी को मूल प्रेक्षणों के साथ रखना आवश्यक हो।

Grouping दो या दो से अधिक चरों द्वारा परिणाम को अंतिम चर को छोड़कर बाकी सभी चरों के आधार पर समूहीकृत किया जाता है। dplyr आपको चेतावनी देता है क्योंकि बाद के क्रियापद प्रत्येक समूह के लिए चुपचाप चलते रहेंगे। इससे बचने के लिए .groups = “drop” पास करें।

n() फ़ंक्शन वर्तमान समूह की प्रत्येक पंक्ति की गणना करता है, जिसमें दोहराव भी शामिल हैं। n_distinct() किसी कॉलम में अद्वितीय मानों की गणना करता है। प्रति टीम खिलाड़ियों की गणना के लिए n_distinct() की आवश्यकता होती है, क्योंकि एक ही खिलाड़ी कई सीज़न में दिखाई देता है।

ग्राहक औसत, संख्या और हालिया उपयोग मान जैसे समूह-स्तरीय समुच्चय सारणीबद्ध एआई मॉडल में सबसे मजबूत भविष्यवाणियों में से हैं। group_by() के साथ summarise() का उपयोग उन्हें पुनरुत्पादित रूप से बनाने का मानक तरीका है।

जी हां। एआई सहायक aggregate() और tapply() को group_by() और summarise() पाइपलाइन के रूप में पुनः लिख सकते हैं। दोनों संस्करणों में पंक्तियों की संख्या की तुलना करें, क्योंकि बेस आर और dplyr गुम समूहों को अलग-अलग तरीके से संभालते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: