R でグループごとの要約統計量を計算する方法
R でグループの概要統計を計算するには、2 つの基本的な方法があります。
方法 1: Base R から Tapply() を使用する
tapply(df$value_col, df$group_col, summary)
方法 2: dplyr パッケージの group_by() を使用する
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: Base R から Tapply() を使用する
次のコードは、R でTapply()関数を使用して、グループごとの概要統計を計算する方法を示しています。
#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: dplyr パッケージの group_by() を使用する
次のコードは、 dplyrパッケージのgroup_by()関数とsummary()関数を使用して、グループごとの概要統計を計算する方法を示しています。
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でグループごとの合計を計算する方法