You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中group_by与mutate实现分组占比计算的简化方法问询

简化方案:一步完成所有统计与占比计算

完全可以简化成一步操作,用dplyr的链式调用就能搞定,不用拆分多个中间表,避免冗余的分组和表连接:

share_data <- df %>%
  group_by(DEP) %>%
  summarise(
    total_count = n(),  # 统计每组总行数
    filter_count = sum(T_depart >= 60, na.rm = TRUE),  # 统计每组T_depart≥60的行数,na.rm用于处理缺失值
    share_dep = filter_count / total_count  # 直接计算占比
  )

代码说明:

  • group_by(DEP):一次性按DEP分组,后续所有统计都基于这个分组逻辑
  • n():直接获取当前分组的总行数,不用单独生成统计表
  • sum(T_depart >= 60, na.rm = TRUE):利用R中逻辑值自动转数值的特性(TRUE=1,FALSE=0),求和得到符合条件的行数;如果你的数据里没有缺失值,可以去掉na.rm = TRUE
  • 最后直接在summarise里计算占比,省去了后续left_join的步骤,也避免了列名混淆的问题

补充纠正:

原代码里的share_dep=n.x/n.y计算逻辑是反的,正确占比应该是筛选行数/总行数,也就是n.y/n.x,上面的简化代码直接从源头避免了这个易错点。

内容的提问来源于stack exchange,提问作者Sony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:15:37