R语言使用dplyr计算tibble各section分组下Yes类别占比的方法
解决方法
使用dplyr的group_by()按section分组后,在summarise()里对attendance == "Yes"的逻辑值求平均值即可,逻辑值中TRUE对应数值1、FALSE对应数值0,平均值就是"Yes"的占比。
示例完整代码:
library(dplyr) # 构造原始数据集 attendance <- c("No", "Yes", "No", "Yes", "Yes", "No", "Yes") section <- c("A", "A", "B", "B", "B", "B", "B") tbl <- tibble(attendance, section) # 计算每个分组的Yes占比 tbl %>% group_by(section) %>% summarise(yes_ratio = mean(attendance == "Yes"))
运行后输出结果:
# A tibble: 2 × 2 section yes_ratio <chr> <dbl> 1 A 0.5 2 B 0.667
补充说明:
- 如果attendance字段存在NA值,可在mean函数中添加
na.rm = TRUE参数,即mean(attendance == "Yes", na.rm = TRUE),避免NA导致结果为空。 - 如果需要输出百分比格式,可以调用scales包的
percent()函数,将代码改为yes_ratio = scales::percent(mean(attendance == "Yes"))。
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

