如何使用 dplyr 计算相对频率


通常,您可能想要计算 R 中数据框的一列或多列中值的相对频率/比例。

幸运的是,使用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 教程。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注