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 の得点方法は1210です。

この例では、チーム B で 2 つのポイント値が最も頻繁に発生しました。したがって、これらの各モード値は、出力でチーム B の別の行に返されます。

追加リソース

次のチュートリアルでは、R で他の記述統計を計算する方法について説明します。

R で 5 つの数値の要約を計算する方法
Rで集計表を作成する方法
R で Mean() 関数を使用する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です