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

如何使用dplyr实现数据分组计数并输出分类统计结果

完全可以用dplyr配合tidyr实现这个分组宽表统计需求,核心步骤很简单:

  • 先按部门、审核状态两个维度分组计数
  • 把长格式计数结果转成宽表,没有出现的状态组合计数填0
  • 重命名列和你需要的字段名对齐

完整可运行代码如下:

# 加载需要的包,未安装的话可以先跑install.packages(c("dplyr","tidyr"))
library(dplyr)
library(tidyr)

# 你提供的原始数据集
depa2<-c("La Paz","La Paz","La Paz"      
         ,"La Paz"      , "La Paz"  ,     "La Paz"      
         , "La Paz"   ,    "La Paz"   ,    "La Paz"      
         ,"La Paz"   ,    "La Paz","Cabañas"     
         ,"Cabañas" ,     "Usulután"    , "Usulután"    
         ,"Usulután"     ,"Usulután"    , "Usulután")


condition<-c( "Aprobado",
              "Reprobado", "Reprobado", "Reprobado", "Reprobado"
              ,"Reprobado", "Aprobado" ,"Aprobado", "Reprobado"
              ,"Aprobado" , "Reprobado", "Reprobado", "Reprobado"
              ,"Reprobado" , "Aprobado", "Reprobado"
              , "Aprobado", "Reprobado")


data<-data.frame(depa2,condition)

# 计算统计结果
stat_result <- data %>%
  count(depa2, condition, name = "cnt") %>%
  pivot_wider(
    names_from = condition,
    values_from = cnt,
    values_fill = 0 # 没有对应取值的分组计数填0
  ) %>%
  rename(
    Aprobados = Aprobado,
    Reprobados = Reprobado
  )

# 打印结果
print(stat_result)

注意:你给出的预期结果里的数值和提供的原始数据不匹配,按你贴的原始数据集计算,正确的统计结果如下:

depa2AprobadosReprobados
La Paz47
Cabañas02
Usulután23

如果你用的是比较旧的tidyr版本,没有pivot_wider函数,可以把转宽表的部分替换成spread函数,效果完全一致:

stat_result <- data %>%
  count(depa2, condition) %>%
  spread(condition, n, fill = 0) %>%
  rename(Aprobados = Aprobado, Reprobados = Reprobado)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:12:30