如何在R的dplyr分组汇总中统计count_col等于1的占比
R语言dplyr分组统计新增占比计算
需求说明
现有如下dplyr代码,用于对数据框df按label分组,计算count_col的均值、中位数及每组样本量,再按均值降序排列:
df |> dplyr::group_by(label) |> dplyr::summarize(avg_col = mean(count_col, na.rm = TRUE), med_col = median(count_col, na.rm = TRUE), n = n()) |> dplyr::arrange(desc(avg_col))
需要在summarize语句中新增统计:count_col等于1的次数占该组总次数的百分比。
解决代码
直接在summarize中新增计算逻辑即可,利用逻辑值的数值特性实现占比统计:
df |> dplyr::group_by(label) |> dplyr::summarize(avg_col = mean(count_col, na.rm = TRUE), med_col = median(count_col, na.rm = TRUE), n = n(), pct_eq1 = mean(count_col == 1, na.rm = TRUE) * 100) |> dplyr::arrange(desc(avg_col))
实现说明
count_col == 1会生成一个逻辑向量,满足条件的元素为TRUE(数值等价于1),不满足的为FALSE(数值等价于0)- 对这个逻辑向量求均值
mean(..., na.rm = TRUE),得到的就是满足条件的元素占组内非缺失元素的比例 - 乘以100后转换为百分比格式,结果存储在
pct_eq1列中
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

