Dplyr を使用して相対周波数を計算する方法
多くの場合、R のデータ フレームの 1 つ以上の列の値の相対頻度や割合を計算したい場合があります。
幸いなことに、これはdplyrパッケージの関数を使用して簡単に行うことができます。このチュートリアルでは、これらの関数を使用して、次のデータ フレームの相対頻度を計算する方法を示します。
#create data frame df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'), position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'), points = c(12, 15, 19, 22, 32, 34, 39)) #view data frame df team position points 1 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 32 6 BG 34 7 BF 39
例 1: 変数の相対頻度
次のコードは、データ フレーム内の各チームの相対頻度を計算する方法を示しています。
library(dplyr) df %>% group_by (team) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 2 x 3 team n freq 1 to 3 0.429 2 B 4 0.571
これは、チーム A がデータ フレーム内の全行の 42.9% を占め、チーム B が残りの 57.1% の行を占めていることがわかります。これらを合計すると 100% になることに注意してください。
関連: 完全ガイド: R でデータをグループ化して要約する方法
例 2: いくつかの変数の相対頻度
次のコードは、チームごとのポジションの相対頻度を計算する方法を示しています。
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 0.667 2 AG 1 0.333 3 BF 1 0.250 4 BG 3 0.750
これは次のことを示しています。
- チーム A の選手の 66.7% がポジション F にいます。
- チーム A の選手の 33.3% がポジション G にいます。
- チーム A の選手の 25.0% がポジション F にいます。
- B チームの選手の 75.0% が G ポジションにいます。
関連: Mutate を使用して R で新しい変数を作成する方法
例 3: 相対度数をパーセンテージで表示する
次のコードは、チームごとのポジションの相対頻度を計算する方法と、これらの相対頻度をパーセンテージで表示する方法を示しています。
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = paste0(round(100 * n/sum(n), 0), ' % ')) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 67% 2 GA 1 33% 3 BF 1 25% 4 BG 3 75%
その他の R チュートリアルはここで見つけることができます。