R でグループごとにモードを計算する方法 (例あり)
データセットのモードは、最も頻度の高い値を表します。
R 統計ソフトウェアにはデータセットのモードを計算する組み込み関数はありませんが、次の関数を使用してモードを計算できます。
find_mode <- function (x) { u <- unique(x) tab <- tabulate(match(x, u)) u[tab == max(tab)] }
次の例は、この関数を使用して R のグループごとにモードを計算する方法を示しています。
例 1: R のグループによるモードの計算 (1 つのモード)
R に、さまざまなチームのバスケットボール選手が獲得したポイントを示す次のデータ フレームがあるとします。
#define data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), points=c(5, 7, 7, 9, 12, 12, 10, 14)) #view data frame df team points 1 to 5 2 to 7 3 to 7 4 to 9 5 B 12 6 B 12 7 B 10 8 B 14
次のコードを使用して、チームごとにグループ化されたポイントのモードを計算できます。
library (dplyr)
#define function to calculate mode
find_mode <- function (x) {
u <- unique(x)
tab <- tabulate(match(x, u))
u[tab == max(tab)]
}
#calculate mode of 'points' by 'team'
df %>%
group_by(team) %>%
summarize(mode_points = find_mode(points))
# A tibble: 2 x 2
team mode_points
1 to 7
2 B 12
結果から次のことがわかります。
- チーム A のポイント モードは7です。
- チーム B のポイント モードは12です。
例 2: R のグループによるモードの計算 (複数のモード)
R に次のデータ フレームがあるとします。
#define data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), points=c(5, 7, 7, 9, 12, 12, 10, 10)) #view data frame df team points 1 to 5 2 to 7 3 to 7 4 to 9 5 B 12 6 B 12 7 B 10 8 B 10
次のコードを使用して、チームごとにグループ化されたポイントのモードを計算できます。
library (dplyr)
#define function to calculate mode
find_mode <- function (x) {
u <- unique(x)
tab <- tabulate(match(x, u))
u[tab == max(tab)]
}
#calculate mode of 'points' by 'team'
df %>%
group_by(team) %>%
summarize(mode_points = find_mode(points))
# A tibble: 3 x 2
# Groups: team [2]
team mode_points
1 to 7
2 B 12
3 B 10
結果から次のことがわかります。
- チーム A のポイント モードは7です。
- チーム B の得点方法は12と10です。
この例では、チーム B で 2 つのポイント値が最も頻繁に発生しました。したがって、これらの各モード値は、出力でチーム B の別の行に返されます。
追加リソース
次のチュートリアルでは、R で他の記述統計を計算する方法について説明します。