如何使用 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%。
示例 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位置。
示例 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 教程。