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

泰坦尼克号数据集性别维度生存率百分比计算错误排查求助

泰坦尼克号性别生存率计算错误修正

你的代码问题出在分组逻辑和总和计算的范围:

  • 当前group_by(Survived, Sex)后,summarize得到的是「存活状态+性别」组合的人数,后续mutate里的sum(number)会计算所有行的总人数(即全体乘客数),而非每个性别的总人数,导致百分比不是你需要的「单个性别内的存活占比」。

修正方案

以下两种方法都可以得到正确的结果:

方法一:先按性别分组统计

titanic_table <- train_data %>%
  group_by(Sex) %>%
  count(Survived) %>%
  mutate(
    Survived = factor(Survived, levels = c(0, 1), labels = c("No", "Yes")),
    total_number = sum(n), # 按当前分组(Sex)计算总人数
    percentage = (n / total_number) * 100
  )

逻辑说明:

  1. group_by(Sex)先按性别分组
  2. count(Survived)统计每个性别下,存活/未存活的乘客数
  3. sum(n)此时会计算每个性别对应的总人数,以此为基数计算百分比

方法二:调整分组保留层级

titanic_table <- train_data %>%
  group_by(Survived, Sex) %>%
  summarize(number = n(), .groups = "drop_last") %>% # 仅保留Sex分组
  mutate(
    Survived = factor(Survived, levels = c(0, 1), labels = c("No", "Yes")),
    total_number = sum(number), # 基于Sex分组计算总人数
    percentage = (number / total_number) * 100
  )

逻辑说明:

  1. 先按「存活状态+性别」分组统计人数
  2. .groups = "drop_last"移除最内层的Survived分组,保留Sex分组
  3. 此时sum(number)会针对每个性别计算总人数,确保百分比计算正确

验证

修正后,你会看到女性存活占比约74%,男性约19%,符合泰坦尼克号数据集的真实分布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:15:15