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

使用R语言dplyr分组后统计总条数及各类别对应数量的问题

解决方案

你可以直接在dplyr的summarize()中新增条件求和的统计项,匹配对应死亡类型的行进行计数即可:

library(dplyr)
total_deaths <- data %>%
  group_by(City, Year) %>%
  summarize(
    n_Total = n(),
    n_Homicides = sum(`Type of Death` == "Homicide"),
    n_Suicides = sum(`Type of Death` == "Suicide"),
    .groups = "drop"
  )

注意:列名Type of Death包含空格,需要用反引号包裹避免语法报错,.groups = "drop"参数用于关闭分组残留,避免dplyr输出提示警告。

如果你后续需要统计的死亡类型较多,逐个写统计项效率太低,也可以用计数+长宽转换的方案批量生成对应列:

library(dplyr)
library(tidyr)
total_deaths <- data %>%
  # 按城市、年份、死亡类型分组计数
  count(City, Year, `Type of Death`, name = "cnt") %>%
  # 长表转宽表,把死亡类型转为单独的列
  pivot_wider(
    names_from = `Type of Death`,
    values_from = cnt,
    # 没有对应数据的填充为0
    values_fill = 0,
    # 列名加前缀和你需要的格式对齐
    names_glue = "n_{.name}s"
  ) %>%
  # 计算总死亡数
  mutate(n_Total = n_Homicides + n_Suicides) %>%
  # 调整列顺序和你期望的输出一致
  select(City, Year, n_Total, everything())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 04:51:03