Dplyr を使用してクロス集計を作成する方法 (例あり)


次の基本構文を使用して、R のdplyrおよびTidyrパッケージの関数を使用してクロス集計を作成できます。

 df %>%
  group_by (var1, v ar2) %>%
  tally () %>%
  spread (var1,n)

次の例は、この構文を実際に使用する方法を示しています。

例 1: 基本的なクロス集計の作成

R に次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'),
                 dots=c(7, 7, 8, 11, 13, 15, 19, 13))

#view data frame
df

  team position points
1 AG 7
2 AG 7
3AF 8
4 AC 11
5 BG 13
6 BF 15
7 BF 19
8 BC 13

次の構文を使用して、「チーム」変数と「ポジション」変数のクロス集計を作成できます。

 library (dplyr)
library (tidyr)

#produce crosstab
df %>%
group_by (team, position) %>%
tally () %>%
spread (team, n)

# A tibble: 3 x 3
  position AB
1 C 1 1
2 F 1 2
3 G 2 1

クロス集計値を解釈する方法は次のとおりです。

  • チーム「A」に所属するポジション「C」のプレイヤーが1人います。
  • ポジション「C」を占め、チーム「B」に所属するプレイヤーが1人います。
  • チーム「A」に所属するポジション「F」の選手が1名います。
  • ポジション「F」、チーム「B」に所属する選手が2名います。
  • チーム「A」に所属するポジション「G」の選手が2名います。
  • チーム「B」に所属するポジション「G」のプレイヤーが1人います。

Spread()関数で使用される変数を変更することで、クロスタブの行と列を変更できることに注意してください。

 library (dplyr)
library (tidyr)

#produce crosstab with 'position' along columns
df %>%
group_by (team, position) %>%
tally () %>%
spread (position, n)

# A tibble: 2 x 4
# Groups: team [2]
  team CFG
1 A 1 1 2
2 B 1 2 1

関連: Tidyr のスプレッド機能の使用方法

追加リソース

次のチュートリアルでは、dplyr で他の一般的な機能を実行する方法を説明します。

dplyr を使用して相対周波数を計算する方法
dplyrを使用してインデックスによって列を選択する方法
dplyrを使用して行を削除する方法

コメントを追加する

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