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

在R中使用groupby和dplyr按分组列计算比例

解决方案

你的代码核心问题是用错了获取分组行数的函数,nrow(merchantName)无法获取当前分组的观测数,以下是修正后的两种实现方式:

写法一:通过求和与计数计算比例

dt_nm %>%  
  group_by(merchantName) %>% 
  summarise(ratio_fraud = sum(isFraud) / n(),
            .groups = "drop")

写法二:利用均值直接计算(更简洁)

dt_nm %>%  
  group_by(merchantName) %>% 
  summarise(ratio_fraud = mean(isFraud),
            .groups = "drop")

关键细节说明

  • n():在分组后的summarise环境中,n()会返回当前分组的观测总数,这正是你需要的每组总样本量。
  • mean(isFraud):由于isFraud是取值为0或1的二元变量,它的均值等价于1的观测数占该组总数的比例,写法更简洁且效率一致。
  • .groups = "drop":可选参数,用于计算完成后取消数据框的分组状态,避免后续操作因残留分组逻辑出现意外结果。

针对70万条观测、1000个分组的数据集,上述dplyr操作的性能完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:55:24