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

如何合并数据行并求和?R语言合并非男女性别行汇总数值的问题

解决方案

首先先还原你的数据集(方便直接测试):

df <- data.frame(
  Gender = c("Agender", "Female", "Genderfluid", "Non Binary", "Male"),
  Total = c(9, 15, 10, 2, 14)
)

你的原代码报错核心问题:

  • R对大小写敏感,你数据里的列是Gender不是gender
  • 错误使用rownames():df$Gender是向量,没有行名,应该直接操作该列的取值
  • 分组名称写错了,你要的是「其他性别身份」不是「Transgender」
  • aggregate语法错误,需要指定要聚合的列(Total),而非整个数据框

方法一:Base R 实现

先生成分组标签,再聚合求和:

# 生成分组标签:保留Female和Male,其余归为「其他性别身份」
df$Group <- ifelse(df$Gender %in% c("Female", "Male"), df$Gender, "其他性别身份")
# 按分组汇总Total列
result <- aggregate(Total ~ Group, data = df, sum)
# 调整列名和行顺序,匹配目标格式
colnames(result) <- c("Gender", "Total")
result <- result[c(2, 3, 1), ]

方法二:dplyr 包实现(更简洁直观)

如果习惯用tidyverse工具链,这个写法更清晰:

library(dplyr)

result <- df %>%
  mutate(Gender = case_when(
    Gender %in% c("Female", "Male") ~ Gender,
    TRUE ~ "其他性别身份"
  )) %>%
  group_by(Gender) %>%
  summarise(Total = sum(Total)) %>%
  arrange(match(Gender, c("Female", "Male", "其他性别身份")))

最终得到的结果:

GenderTotal
Female15
Male14
其他性别身份21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:15:28