R语言按AB、CD分组计算EF统计量与GH类别计数的实现问题
R分组聚合计算问题修正方案
前置要求:需已加载
dplyr包,若未加载先执行library(dplyr)
问题1:生成含EF统计值的df_1
报错原因
summarise参数不符合语法要求,核心问题两点:
summarise的参数规则为 新列名 = 对分组内数据的计算逻辑,不能直接把函数名作为输入max()/min()/mean()是统计函数,需要传入待计算的EF列作为参数
正确代码
df_1 <- df_original %>% group_by(AB, CD) %>% summarise( Max = max(EF), Min = min(EF), Mean = mean(EF), .groups = "drop" # 可选参数,取消分组属性避免后续操作报错 )
输出验证
执行后得到的结果完全符合预期:
AB CD Max Min Mean A 0 14 12 13 A 1 18 16 17.25 A-2 0 78 12 34 A-2 1 47 12 31
问题2:生成含GH计数的df_2
原有代码的问题
- 把
GH加入分组字段,会导致输出按AB+CD+GH三元组分组,得到每行对应一个GH取值的长格式结果,不符合需要的宽格式 summarise(sum)的写法和问题1一致,未指定具体计算逻辑
正确代码
直接在按AB、CD分组后,用逻辑判断加求和的方式生成两个计数列,无需额外转置操作:
df_2 <- df_original %>% group_by(AB, CD) %>% summarise( M_total = sum(GH == "M"), F_total = sum(GH == "F"), .groups = "drop" )
输出验证
执行后结果完全匹配预期:
AB CD M_total F_total A 0 1 2 A 1 3 1 A-2 0 2 1 A-2 1 1 2
内容的提问来源于stack exchange,提问作者vcat
相关产品推荐
相关产品推荐

