第2章 乘客名单案:数据清洗与dplyr


第 2 章 · 乘客名单案:数据清洗与 dplyr

章节摘要:本章接手一桩海难史上的著名案件——1912 年泰坦尼克号沉没,891 条乘客记录里藏着"谁更容易活下来"的答案。但名单又脏又乱:年龄有缺失、票价有离群、字段口径不一。破案主线:先把名单搬进 R,再修补缺口,最后用 dplyr 五连招完成排查统计。

一条主线

这份数据是数据科学圈最经典的训练案卷之一:每位乘客一条记录,字段包括舱位等级、性别、年龄、票价、登船港口、是否生还。案子的目标是找出与生还相关的因素。真实的原始名单从来不干净——年龄缺了两成、个别票价是 0、个别姓名栏混入特殊符号。所以本章的每一步都围绕"把脏名单整理成可用证据"展开:导入与检视是立案,清洗是修证,dplyr 是排查。

沿途站点

  • 第 1 节 拿到名单:用 read.csv 等函数导入数据,完成标准化检视,确认问题清单。
  • 第 2 节 修补缺口:缺失值识别与处理、异常值排查、重复记录剔除。
  • 第 3 节 动词链侦查:dplyr 的筛选、派生、分组、汇总,把名单整理成结论。

拐点与结论

拐点在第 2 节:很多初学者以为缺失值"删了就行",结果一删只剩六成样本,结论随之处分。正确的做法是先问"为什么缺"——年龄缺失与生并无关还是有关?这决定了是插补、单独成类还是保留缺失标记。结论:清洗不是机械操作,每一步都在影响最终结论的可信度。

读完你应该

  • 用 read.csv / readr 包的函数导入 CSV,并说出两种导入方式的差别
  • 用 is.na、complete.cases、箱线图定位缺失值与离群值
  • 针对"随机缺失"与"有原因的缺失"分别给出处理策略
  • 熟练使用 dplyr 的 filter、mutate、select、group_by、summarize 审讯链条
  • 用管道操作符把多步整理串成一条可读的侦查流水线

本章知识点清单

  • 能描述 read.csv 与 read_csv 在类型处理、返回对象上的差别
  • 能处置编码乱码、无表头、分隔符错三类导入事故
  • 能用 colSums 拼配 is.na 输出每列缺失计数与比例
  • 能区分 NA、空字符串、空格串、哨兵值四种"缺失形态"
  • 能演示"缺失机制侦查":比较缺失组与完整组的结局差异
  • 能说出整行删除、插补、单独成类三种策略的适用条件与代价
  • 能用四分位距规则定位离群值,并解释"异常不等于错误"
  • 能执行分组中位数插补并说明它为何优于全局均值
  • 能熟练串联 filter、select、mutate、arrange、group_by、summarize
  • 能用 case_when 做多条件派生、用 cut 做连续变量离散化

本章易错点地图

易错点 典型症状 处方
插补忘 na.rm median 返回 NA,整列被污染 插补代码里 na.rm = TRUE 是标配
异常即删 头等舱天价票被删,高端样本消失 先核实,保不住就标记保留
summarize 后带分组 后续每步"每组一份",结果翻倍 链尾 .groups = "drop"
字符串比较漏引号 object not found 报错 比较的是取值,取值要引号

名单案的初步结案

三节走完,名单案可以出具阶段性结论:性别与舱位等级是生还的两大主因素,妇女与儿童在撤离中获得事实上的优先,头等舱的生存优势部分来自舱位位置与登记规范(有舱位记录本身就是生还率的强信号)。年龄缺失约两成,本章用分组插补保证了样本量,但结论表述时仍需注明插补口径。这个"结论 + 口径说明"的成对出现,就是分析可信度的来源——第 5 章讲推断统计时,会给这类差异配上显著性检验,让结论从"看起来差很多"升级为"统计上站得住"。

下一章的接力

名单案产出了干净的宽表。下一章的国家发展档案案会追问:如果分析需要把宽表转成长表、把每年数据逐行处理怎么办——那是数据重塑与编程的主场。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U