Як розрахувати підсумкову статистику по групах у r
Існує два основних способи обчислення підсумкової статистики групи в R:
Спосіб 1. Використовуйте tapply() із Base R
tapply(df$value_col, df$group_col, summary)
Спосіб 2: Використовуйте group_by() з пакета dplyr
library (dplyr)
df %>%
group_by (group_col) %>%
summarize (min = min(value_col),
q1 = quantile(value_col, 0.25 ),
median = median(value_col),
mean = mean(value_col),
q3 = quantile(value_col, 0.75 ),
max = max(value_col))
Наступні приклади показують, як використовувати кожен метод на практиці.
Спосіб 1. Використовуйте tapply() із Base R
У наступному коді показано, як використовувати функцію tapply() у R для обчислення підсумкової статистики за групою:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
points=c(99, 68, 86, 88, 95, 74, 78, 93),
assists=c(22, 28, 31, 35, 34, 45, 28, 31),
rebounds=c(30, 28, 24, 24, 30, 36, 30, 29))
#calculate summary statistics of 'points' grouped by 'team'
tapply(df$points, df$team, summary)
$A
Min. 1st Qu. Median Mean 3rd Qu. Max.
68.00 81.50 87.00 85.25 90.75 99.00
$B
Min. 1st Qu. Median Mean 3rd Qu. Max.
74.0 77.0 85.5 85.0 93.5 95.0
Спосіб 2: Використовуйте group_by() з пакета dplyr
У наступному коді показано, як використовувати функції group_by() і summary() у пакеті dplyr для обчислення підсумкової статистики за групами:
library (dplyr)
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
points=c(99, 68, 86, 88, 95, 74, 78, 93),
assists=c(22, 28, 31, 35, 34, 45, 28, 31),
rebounds=c(30, 28, 24, 24, 30, 36, 30, 29))
#calculate summary statistics of 'points' grouped by 'team'
df %>%
group_by (team) %>%
summarize (min = min(points),
q1 = quantile(points, 0.25 ),
median = median(points),
mean = mean(points),
q3 = quantile(points, 0.75 ),
max = max(points))
# A tibble: 2 x 7
team min q1 median mean q3 max
1 A 68 81.5 87 85.2 90.8 99
2 B 74 77 85.5 85 93.5 95
Зауважте, що обидва методи повертають абсолютно однакові результати.
Варто зазначити, що підхід dplyr, швидше за все, буде швидшим для великих кадрів даних, але обидва методи працюватимуть однаково на менших кадрах даних.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші поширені функції групування в R:
Як створити таблицю частот за групами в R
Як обчислити суму за групою в R
Як обчислити середнє значення на групу в R
Як обчислити суму за групою в R