توابع جمع بندی و گروه بندی (Summarise, Group_by) در R — راهنمای کاربردی

یکی از روشهای خلاصه کردن دادهها، جمعیبندی (Aggregation) است. با استفاده از این روش برای یک گروه از دادهها، یک نماینده انتخاب میشود. به این ترتیب میتوان توزیع احتمالی یا فراوانی یک متغیر کمی را به تفکیک سطوح مختلف یک متغیر کیفی یا طبقهای (Categorical Variable) بدست آورد. در این نوشتار به بررسی دو تابع معروف در زبان برنامهنویسی آماری R به نامهای $$summarise()$$ و $$group\_by()$$ خواهیم پرداخت. در این میان از کتابخانه dplyr استفاده خواهیم کرد. بنابراین شاید مطالعه مطلب تبدیل و پاکسازی داده ها با کتابخانه dplyr و tidyr در R — راهنمای کاربردی خالی از لطف نباشد. اکنون و در ادامه به توابع جمع بندی پیشتر اشاره شده خواهیم پرداخت.
توابع جمع بندی (Aggregation Functions)
به عنوان یک «تحلیلگر داده» (Data Scientist) باید توانایی تغییر ساختار و شاخصسازی برای یک «مجموعه داده» (Dataset) را داشته باشید. بخصوص اگر از زبانبرنامه نویسی R استفاده میکنید، این کار به صورت معمول در همه تحلیلها، ضرورت خواهد داشت.
برای آشنایی با این گونه توابع از یک بانک اطلاعاتی به نام batting_lahman.csv که در (+) قرار دارد، استفاده خواهیم کرد. این مجموعه داده شامل 20563 مشاهده و ۲۲ متغیر است. البته بعضی از این متغیرها را در اینجا به کار خواهیم گرفت. متغیرهایی که در این نوشتار به آنها میپردازیم در زیر فهرست شدهاند.
نام متغیر | شرح |
playerID | شماره بازیکن (از نوع عامل) |
teamID | کد تیم (از نوع عامل) |
lgID | کد مسابقات (از نوع عامل با سطوح AA, AL, FL, NL, PL, UA) |
AB | تعداد قرارگیری در پست At bats (عددی) |
G | تعداد بازیهای هر بازیکن (عددی) |
R | تعداد Runها (عددی) |
HR | تعداد بازیهای خانگی (عددی) |
SH | تعداد ضربههای sacrifice |
برای شروع کار گامهای زیر را باید برداریم تا به مجموعه داده دلخواه با متغیرهایی که در بالا ذکر شده دست پیدا کنیم.
- گام اول: دادهها را وارد کنیم.
- گام دوم: متغیرهای مورد نظر را انتخاب کنیم.
- گام سوم: دادهها را مرتب کنیم.
این گامها در کد زیر پیادهسازی شدهاند. همانطور که میبینید، کتابخانه dplyr در اینجا نقش مهمی دارد.
library(dplyr) # Step 1 data <- read.csv("https://raw.githubusercontent.com/thomaspernet/data_csv_r/master/data/batting_lahman.csv") % > % #Step 2 select(c(playerID, yearID, AB, teamID, lgID, G, R, HR, SH)) % > % #Step 3 arrange(playerID, teamID, yearID)
برای مشاهده بخشی از دادهها بهتر است از دستور (glimpse(data استفاده کنیم. نتیجه به صورت زیر خواهد بود.
## Observations: 20,563 ## Variables: 9 ## $ playerID <fctr> aardsda01, aardsda01, aaronha01, aaronha01, aaronha0... ## $ yearID <int> 2009, 2010, 1973, 1957, 1962, 1975, 1986, 1979, 1980,... ## $ AB <int> 0, 0, 392, 615, 592, 465, 0, 0, 0, 0, 0, 0, 45, 610, ... ## $ teamID <fctr> SEA, SEA, ATL, ML1, ML1, ML4, BAL, CAL, CAL, CAL, LA... ## $ lgID <fctr> AL, AL, NL, NL, NL, AL, AL, AL, AL, AL, NL, AL, NA, ... ## $ G <int> 73, 53, 120, 151, 156, 137, 66, 37, 40, 24, 32, 18, 1... ## $ R <int> 0, 0, 84, 118, 127, 45, 0, 0, 0, 0, 0, 0, 3, 70, 20, ... ## $ HR <int> 0, 0, 40, 44, 45, 12, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0... ## $ SH <int> 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, NA, 5, 8, 0, NA, ...
تابع Summarise
شکل تابع $$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
پارامتر اول نام «چارچوب داده» (Data Frame) و پارامتر دوم نام متغیر و نحوه محاسبه این متغیر جدید است. برای مثال اگر قرار باشد که میانگین متغیر R را در چارچوب داده data محاسبه کرده و در متغیر mean_run قرار دهیم، باید شکل دستوری summarise به صورت زیر نوشته شود.
summarise(data, mean_run =mean(R))
نتیجه ایجاد متغیر mean_run با مقدار 19.20144 خواهد بود. همین کار را برای متغیرهای دیگر نیز میتوان در یک دستور انجام داد. برای مثال، کد زیر میانگین را برای متغیرهای G و SH محاسبه میکند. البته برای متغیر SH پارامتر na.rm=TRUE نشان میدهد که باید مقادیر ناموجود (گمشده) که با NA در مجموعه داده data ثبت شدهاند حذف و سپس محاسبه میانگین صورت گیرد.
summarise(data, mean_games = mean(G), mean_SH = mean(SH, na.rm = TRUE))
گروه بندی با group_by
اگر هدف از اجرای تابع $$summarise()$$ جمعبندی براساس گروهها باشد باید از group_by نیز استفاده کرد. به این ترتیب آمارههای توصیفی به تفکیک متغیر گروهبندی ایجاد میشود. ترکیب این تابع با توابع دیگر مانند mutate و filter و arrange بسیار کاربردی و موثر است.
در اینجا استفاده از «عملگر سلسلهای» (Pipeline Operator) بخصوص زمانی که مراحل زیاد باشند، مناسب به نظر میرسد. در ادامه با استفاده از این عملگر و تابع group_by و summarise محاسبات را انجام دادهایم.
data %>% group_by(lgID) % > % summarise(mean_run = mean(HR))
همانطور که دیده میشود، مجموعه داده data وارد فیلتر group_by شده و محاسبات مربوط به میانگین متغیر HR به تفکیک متغیر lgID ثبت خواهد شد. در نتیجه خروجی شامل ۷ سطر است که میانگین متغیر HR را در سطوح مختلف متغیر lgID مشخص میکند.
## # 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 از کتابخانه ggplot2 نیز میتوان استفاده کرد. به این ترتیب میتوان محاسباتی که توسط summarise صورت گرفته را در نمودار به کار برد. فرض کنید میخواهیم میانگین متغیر HR را به تفکیک سطوح متغیر lgID روی یک نمودار میلهای (Bar Chart) نمایش دهیم. مراحل زیر برای انجام چنین کاری باید طی شود.
- انتخاب چارچوب داده (Data Frame)
- دستهبندی کردن دادهها (Group Data)
- محاسبه شاخص جمعبندی (Summarize the Data)
- رسم نمودار شاخص محاسبه شده (Plot the Summary Statistics)
این گامها در کد زیر انجام شده است. توجه داشته باشید که از کتابخانه ggplot2 استفاده کردهایم.
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()" ) )
خروجی با اجرای این کد به صورت زیر در خواهد آمد. مشخص است که مراحل اولیه تا قبل از اجرای فرمان ggplot به منظور طبقهبندی و جمعبندی صورت گرفته و در گام آخر رسم نمودار انجام شده است.
توابع محاسباتی در Summarise
تقریبا همه توابع محاسباتی در summarise قابلیت استفاده دارند. در ادامه به لیست کوتاهی از توابع معمول که در summarise به کار میروند اشاره میکنیم. توجه دارید که این لیست شامل توابعی است که خروجیشان به صورت یک عدد ظاهر خواهد شد.
نوع تابع | شیوه محاسبه | تابع |
پایه | میانگین | mean() |
میانه | median() | |
جمع | sum() | |
پراکندگی | انحراف استاندارد | sd() |
دامنه میان چارکی | IQR() | |
دامنه | حداقل | min() |
حداکثر | max() | |
چندک | quantile() | |
موقعیت | مقدار اولین موقعیت (اولین مقدار) | first() |
مقدار آخرین موقعیت (آخرین مقدار) | last() | |
مقدار nامین موقعیت | nth() | |
شمارش | شمارش تعداد سطرها | n() |
شمارش تعداد مشاهدات مجزا | n_distinct() |
در ادامه برای هر یک از این حالتها مثالهایی خواهیم دید.
توابع پایه
در کدهایی که تا به حال در این نوشتار دیدید، نتایج محاسبه شاخصهای جمعبندی و summarise در متغیری ثبت نشد. حال نتیجه محاسبات با summarise را درون یک «چارچوب داده» (data frame) ثبت و از آن استفاده خواهیم کرد.
در ادامه قصد داریم، میانگین تعداد بازی در هر سال را محاسبه و سپس نمودار مربوط به این موضوع را به صورت یک نمودار خطی ترسیم کنیم.
در گام اول، شاخص میانگین استخراج میشود. این کار توسط کد زیر صورت گرفته است:
## Mean ex1 <- data %>% group_by(yearID) %>% summarise(mean_game_year = mean(G)) head(ex1)
نتیجه اجرای این کار به صورت زیر است. مشخص است که نتیجه محاسبه شاخص میانگین توسط summarise روی گروههای تعیین شده توسط group_by برای هر سال استخراج شده و به صورت یک چارچوب داده در 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
در گام دوم برای رسم نمودار از متغیر ایجاد شده کمک گرفته و نمودار خطی ترسیم میشود.
# 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 میتوان بیش از یک متغیر را محاسبه کرد. در کد زیر علاوه بر محاسبه میانه برای متغیر AB میانه برای دادههایی از متغیر AB که غیر صفر هستند نیز محاسبه شده و با میانه قبلی مقایسه شده است. همانطور که دیده میشود از نوعی فیلتر به صورت $$[AB>0]$$ برای متغیر AB استفاده کردهایم.
## 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]))
به این ترتیب خروجی به صورتی است که «میانه» (Median) در هر دو حالت (با احتساب مقدارهای صفر و بدون آن) محاسبه و به تفکیک lgID ظاهر شده است.
## # 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 مجموع بازیهای خانگی هر تیم (HR) به تفکیک کد لیگ مسابقات (lgID) محاسبه شده است.
## Sum data %>% group_by(lgID) %>% summarise(sum_homerun_league = sum(HR))
نکته: همانطور که در خروجی میبینید متغیر lgID از نوع فاکتور یا عامل (<fctr>)و متغیر جمعبندی sum_homerun_leage عددی (<int>) است.
## # 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 قابل دسترسی است، کمک میگیرند. کد زیر به منظور محاسبه میزان پراکندگی برای HR تهیه شده است.
# 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
نکته: اگر میخواهید خروجی به صورت مرتب شده برحسب متغیر جمعبندی ظاهر شود باید از دستور arrange استفاده کنید. بنابراین برای نمایش انحراف استاندارد بازیهای خانگی به ترتیب از بزرگ به کوچک دستورات را به صورتی که در ادامه آمده است، وارد و اجرا کنید.
data %>% group_by(teamID) %>% summarise(sd_at_bat_league = sd(HR)) %>% arrange(desc(sd_at_bat_league))
خروجی این قطعه کد در ادامه، دیده میشود.
# A tibble: 148 x 2 teamID sd_at_bat_league <fct> <dbl> 1 ML1 10.2 2 MIL 9.53 3 COL 9.49 4 ANA 8.78 5 TOR 8.72 6 ATL 8.54 7 NYA 8.11 8 TEX 7.87 9 MIA 7.78 10 BAL 7.74 # ... with 138 more rows >
مشخص است که تیم ML1 دارای بیشترین انحراف استاندارد برای بازیهای خانگی است.
معیارهای مرتبط با دامنه
همچنین میتوان حداکثر و حداقل تعداد بازیهای هر بازیکن را به همین شکل بدست آورد. به کد زیر توجه کنید.
# Min and max data % > % group_by(playerID) % > % summarise(min_G = min(G), max_G = max(G))
نکته: حتما تا به حال متوجه شدهاید که با اجرای عملگر سلسله مراتب، احتیاجی به ذکر مجموعه داده data در summarise نیست.
پس از انجام محاسبات، خروجی به صورتی که در ادامه قابل مشاهده است، ظاهر خواهد شد.
## # 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
موقعیت
برای نمایش مقدارها در موقعیتهای خاص از توابعی مانند first و last استفاده میکنیم. فرض کنید که باید برای هر بازیکن، سال شروع به فعالیت ورزشی و سال بازنشستگی را مشخص کنید. این توابع را در summarise به این منظور به کار برده و کدی که در ادامه قابل مشاهده است را ایجاد کردهایم.
# 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 استفاده شود. فرض کنید در مجموعه داده data بخواهیم فقط روی بازیهایی که تیم در سال دوم فعالیتش انجام داده تمرکز داشته باشیم. با استفاده از کدی که در ادامه مشاهده میکنید این منظور محقق شده است.
# nth data %>% group_by(teamID) %>% summarise(second_game = nth(yearID, 2)) %>% arrange(second_game)
ابتدا بوسیله group_by دستهبندی براساس کد تیم صورت گرفته، سپس خروجی براساس دومین «سال بازی» (yearID) هر تیم به صورت نزولی ظاهر خواهد شد. به خروجی توجه کنید.
## # 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
به این ترتیب، متوجه میشویم سال ۱۸۷۱ دومین سالی بوده که تیم BS1 در لیگ شرکت کرده بوده است.
شمارش (Count)
برای شمارش تعداد مشاهدات براساس تفکیکی که group_by ایجاد کرده است، از تابع $$n()$$ در summarise استفاده میکنیم. به کد زیر توجه کنید.
# count observations data %>% group_by(playerID) %>% summarise(number_year = n()) %>% arrange(desc(number_year))
مشخص است که برای مرتبسازی خروجی از arrange و شیوه مرتبسازی نزولی (Descending) استفاده شده است. خروجی که شامل تعداد بازیهای بازیکنان به صورت نزولی است را در ادامه میتوانید ببینید.
## # 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_distinct بهره بگیرید. فرض کنید احتیاج به لیستی دارید که در آن مشخص شود هر تیم تا به حال از چند بازیکن استفاده کرده است. کدی که در ادامه میبینید به این منظور تهیه شده است.
# distinct values data %>% group_by(teamID) %>% summarise(number_player = n_distinct(playerID)) %>% arrange(desc(number_player))
خروجی به صورت زیر در خواهد آمد. همانطور که مشخص است 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)
همانطور که گفته شد، تابع group_by امکان دستهبندی مشاهدات را براساس یک متغیر عامل انجام میدهد. این طبقهبندی میتواند به صورت ترکیبی نیز باشد. برای مثال میتوان بازیها را براساس هم سال و هم تیم، طبقهبندی کرده و میانگین بازیهای صورت گرفته را محاسبه کرد.
در خروجی از ترتیب نزولی کد تیم (teamID) و کد سال (yearID) بهره گرفتهایم تا میانگین بازیهای هر تیم در سالهای مختلف را نمایش دهیم. به کد زیر توجه کنید:
# Multiple groups data %>% group_by(yearID, teamID) %>% summarise(mean_games = mean(G)) %>% arrange(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
ایجاد فیلتر (Filter)
گاهی لازم است که محاسبات براساس مشاهدات خاصی صورت گیرد. به کمک تابع ()filter این امکان در R بوجود آمده است. فرض کنید میخواهید محاسبات میانگین بازیها را به سالهای بعد از ۱۹۸۰ محدود کنید. کد زیر به این منظور نوشته شده است.
# Filter data %>% filter(yearID > 1980) %>% group_by(yearID) %>% summarise(mean_game_year = mean(G))
مشخص است که در تابع ()filter از پارامتر 1980<yearID برای ایجاد محدودیت روی مشاهدات برحسب سالهای بعد از 1980 استفاده شده، سپس طبقهبندی و محاسبه میانگین بازیها به تفکیک سال، انجام شده است. نتیجه اجرای کد به صورت زیر خواهد بود.
## # 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
خارج کردن از گروهبندی (Ungroup)
اگر در حین محاسبات روی گروهها، لازم باشد که شاخصی برای همه مشاهدات بدست آید، میتوانید از تابع ()ungroup استفاده کنید. فرض کنید قرار است درصد بازیها خانگی (HR) به کل بازیها (G)، به تفکیک هر بازیکن محاسبه شود. براساس این مقدارها، میانگین درصد کل بازیهای خانگی بازیکنان (بدون در نظر گرفتن گروهبندی براساس بازیکنان) نیز باید در انتها بدست آید.
همانطور که در کد زیر قابل مشاهده است، تابع ()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))
همانطور که دیده میشود، فیلتر $$filter(HR>0)$$ باعث میشود، مشاهداتی که تعداد بازیهای خانگی آنها صفر است، از محاسبات خارج شوند. خروجی به صورت زیر در خواهد آمد.
## # A tibble: 1 x 1 ## total_average_homerun ## <dbl> ## 1 0.06882226
به این ترتیب مشخص است که فقط بطور متوسط ۶ درصد بازیهای بازیکنان در خانه صورت گرفته است.
نکته: در حالت کلی برای گروهبندی یا خارج کردن مشاهدات از گروهبندی، باید از قالبهای زیر استفاده کنید.
group(df, X1, X2, X3) ungroup(df)
خلاصه
جدول زیر به بررسی اجمالی محاسبات توسط summarise پرداخته است.
روش | تابع | کد |
محاسبه میانگین روی مجموعه داده df روی متغیر x1 | mean | summarise(df,mean_x1=mean(x1)) |
محاسبه میانه روی مجموعه داده df روی متغیر x1 | median | summarise(df,median_x1=median(x1)) |
محاسبه مجموع روی مجموعه داده df روی متغیر x1 | sum | summarise(df,sum_x1=sum(x1)) |
محاسبه انحراف استاندارد روی مجموعه داده df روی متغیر x1 | sd | summarise(df,sd_x1=sd(x1)) |
محاسبه دامنه چارکی روی مجموعه داده df روی متغیر x1 | IQR | summarise(df,interquartile_x1=IQR(x1)) |
محاسبه حداقل روی مجموعه داده df روی متغیر x1 | min | summarise(df,minimum_x1=min(x1)) |
محاسبه حداکثر روی مجموعه داده df روی متغیر x1 | max | summarise(df,maximum_x1=max(x1)) |
محاسبه چندکها روی مجموعه داده df روی متغیر x1 | quantile | summarise(df,quantile_x1=quantile(x1)) |
محاسبه اولین مقدار روی مجموعه داده df روی متغیر x1 | first | summarise(df,first_x1=first(x1)) |
محاسبه آخرین مقدار روی مجموعه داده df روی متغیر x1 | last | summarise(df,last_x1=last(x1)) |
محاسبه nامین مقدار روی مجموعه داده df روی متغیر x1 | nth | summarise(df,nth_x1=nth(x1, 2)) |
محاسبه تعداد مقدار روی مجموعه داده df روی متغیر x1 | n | summarise(df,n_x1=n(x1)) |
محاسبه تعداد تکرارهای یک مقدار روی مجموعه داده df روی متغیر x1 | n_distinct | summarise(df,n_distinct _x1=n_distinct(x1)) |
اگر مطلب بالا برای شما مفید بوده، آموزشها و مطالب زیر نیز که در زمینه به کارگیری آمار و محاسبات در نرمافزار R هستند، به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای هوش محاسباتی
- آموزش برنامهنویسی R و نرمافزار R Studio
- آموزش تکمیلی برنامهنویسی R و نرمافزار RStudio
- آموزش بررسی توابع خانواده apply در R
- توابع Apply در زبان برنامه نویسی R — راهنمای کاربردی
- متغیر فاکتور (Factor) یا متغیر عامل در R — راهنمای کاربردی
^^