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 チュートリアルはここで見つけることができます。

コメントを追加する

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