第 22 课:数据结构与编码
🎯 核心实操目标
通关要求:建立专业的数据字典(Codebook),明确每个变量的名称、标签、值标签、测量类型、缺失值定义。本课你将掌握编码规则设计(含反向题标注),完成 Excel → SPSS/Jamovi/CSV 的格式互转,为下一课数据清洗打好基础。
📋 课前准备(5 分钟自检)
工具/账号
- [ ] Excel 或 WPS(编码与字典制作)
- [ ] Jamovi 2.5+ 或 SPSS 29+(变量定义验证)
- [ ] 第 20 课设计完成的问卷
- [ ] 第 21 课回收的原始数据(如已发完问卷)
数据/素材
- [ ] 问卷题项完整列表(含所有变量名)
- [ ] 反向题清单(来自第 19 课)
应急通道
- 还没回收数据 → 用 Case A 模拟数据集 case_A_questionnaire.csv 练手
- Excel 文件过大卡顿 → 转 CSV(取消所有公式与格式)
场景痛点破冰:变量名混乱毁掉分析
"学生回收数据后直接开始跑统计,结果:
- 变量名是中文长串:'AI 焦虑量表第 1 题' — Jamovi 报错
- 选项编码混乱:性别有的写"男/女"有的写"1/2"
- 反向题没标记 — α 系数 0.3
- 缺失值有的写"99"有的写空 — SPSS 全部当成 99 算入
数据字典是数据分析的合同书—— 没有它,所有后续分析都是在赌运气。"
🗺️ 架构重组:数据字典的 5 字段标准
完整数据字典必须包含每个变量的以下 5 个字段:
| 字段 | 含义 | 例 |
|---|---|---|
| 变量名 Variable Name | 英文短代号,用于统计软件 | Anxiety_1 |
| 变量标签 Label | 中文/英文完整描述 | "AI 学习焦虑第 1 题(认知维度)" |
| 值标签 Value Labels | 数值对应含义 | 1=非常不同意, 5=非常同意 |
| 测量类型 Measure | 名义/有序/连续 | Ordinal(李克特 5 点) |
| 缺失值 Missing | 哪些值代表缺失 | 99 = 缺失,空白 = 缺失 |
🚀 拆解实战 A:变量命名规范
命名 5 铁律
- 全英文(避免中文名导致软件兼容问题)
- 下划线分隔(不用空格、不用横杠)
- 维度前缀(Anxiety_1 / Strategy_1 / Efficacy_1)
- 数字后缀(按问卷顺序编号)
- 反向题:原始列保持普通名(如
Anxiety_4),字典里标注"反向题=是";清洗时再生成反转列Anxiety_4_R = 6 - Anxiety_4(详见第 23 课)
标准命名表(Case A 示例)
ID — 受访者编号
Age — 年龄(连续)
Gender — 性别(1=男, 2=女)
Grade — 年级(1=大一 ~ 4=大四)
Major_Category — 专业大类(1=文 2=理 3=工 4=艺体)
Anxiety_1 — 焦虑题 1
...
Anxiety_4 — 焦虑反向题(原始列;清洗时生成 Anxiety_4_R = 6 - Anxiety_4)
Strategy_1 — 策略题 1
...
Efficacy_7 — 效能感反向题(原始列;同上生成 Efficacy_7_R)
Duration_Min — 答题用时(分钟)🚀 拆解实战 B:编码规则速查
| 变量类型 | 编码规则 | 例 |
|---|---|---|
| 二分名义(性别) | 1/2 或 0/1 | 男=1, 女=2 |
| 多分类名义(专业) | 1/2/3/4...(顺序无意义) | 1=文科, 2=理科, 3=工程, 4=艺体 |
| 有序(年级) | 1/2/3/4(顺序有意义) | 1=大一, 2=大二, 3=大三, 4=大四 |
| 李克特 5 点(量表题) | 1–5(高分代表高同意) | 1=非常不同意 ~ 5=非常同意 |
| 反向题 | 原始列同正向题编码(普通名),分析前生成反转列 | 原始 Anxiety_4 → Anxiety_4_R = 6 - Anxiety_4 |
| 连续(年龄) | 直接填数字 | 18, 19, 20... |
| 缺失值 | 统一用 99 或空白,不混用 | 99 = 拒答 / 空白 = 跳过 |
⚠️ 反向题编码的高频踩坑
反向题在数据录入阶段保持原始得分(同意 = 高分), 反转操作在数据清洗时做(公式:新值 = 量表最大值 + 1 - 原值) 错误做法:录入时直接反转 → 后续无法追溯原始反应
🚀 拆解实战 C:Excel 数据字典模板
打开 Excel,按以下结构建立 data_dictionary.xlsx:
| 变量名 | 标签 | 类型 | 取值范围 | 值标签 | 缺失值 | 反向题 | 所属维度 |
|---|---|---|---|---|---|---|---|
| ID | 受访者编号 | 整数 | 1–N | — | 无 | — | — |
| Gender | 性别 | 名义 | 1/2 | 1=男, 2=女 | 99 | — | 人口统计 |
| Anxiety_1 | AI 焦虑题 1 | 有序 | 1–5 | 1=非常不同意, 5=非常同意 | 99/空白 | 否 | 认知焦虑 |
| Anxiety_4 | AI 焦虑反向题(原始列,反转后为 Anxiety_4_R) | 有序 | 1–5 | 同上 | 99/空白 | 是 | 认知焦虑 |
| ... | ... | ... | ... | ... | ... | ... | ... |
把这张表保存到项目根目录,所有后续分析(清洗/统计/写论文)都以此为准。
🚀 拆解实战 D:让 AI 帮你生成数据字典
markdown
【Role】资深数据架构师 + 统计软件实施顾问。
【任务】根据下方问卷结构,为我生成完整的数据字典 Excel 草稿(表格形式)。
【问卷结构】
- 人口统计: ID, 年龄, 性别(1男 2女), 年级(1-4 大一到大四), 专业大类(1-4 文/理/工/艺体)
- AI 学习焦虑量表(12 题, 5 点 Likert): Anxiety_1 到 Anxiety_12
- 认知维度: 1-4
- 情感维度: 5-8
- 行为维度: 9-12
- 反向题: 第 4 题
- 学习策略量表(8 题): Strategy_1 到 Strategy_8, 第 8 题反向
- 学业自我效能感量表(7 题): Efficacy_1 到 Efficacy_7, 第 7 题反向
【输出】Markdown 表格,字段:
变量名 | 标签 | 类型 | 取值范围 | 值标签 | 缺失值 | 反向题 | 所属维度
【特殊要求】
- 反向题在"反向题"列标"是",原始列用普通名;约定反转列命名为 原名+_R(如 Anxiety_4_R),由清洗阶段生成
- 缺失值统一标注为"99/空白"
- 测量类型用国际标准: Nominal/Ordinal/Interval/Ratio🚀 拆解实战 E:Excel → SPSS/Jamovi 数据导入
Excel → Jamovi(推荐)
- 在 Excel 中确保第一行是变量名(与字典对应)
- 另存为 CSV (Comma delimited) (*.csv) 格式
- Jamovi → Open → 选择 CSV → 自动导入
- 右键变量列 → Setup → 设置 Measure type / Value labels(按字典填)
Excel → SPSS
- 同样另存为 CSV
- SPSS → File → Import Data → CSV Data
- 跟随向导设置变量名 / 类型
- 变量视图(Variable View)填入完整 Value Labels 与 Missing Values
🚀 拆解实战 F:常见数据问题预防
| 问题 | 预防 |
|---|---|
| 中文变量名导致软件崩溃 | 全英文命名 |
| 不同问卷平台导出格式不一致 | 统一用问卷星导出 CSV 标准格式 |
| 反向题忘记标记 | 数据字典中显式 反向题=是 列 |
| 缺失值与 0 混淆 | 缺失统一用 99 或空白,不用 0 |
| Excel 自动改日期 | 答题时间设为文本格式存储 |
📦 本课交付物(提交给 AI 初审/讲师抽检)
- [ ] 完整数据字典(Excel 或 Markdown 表格):含所有变量的 8 字段(变量名/标签/类型/取值/值标签/缺失/反向题/维度)
- [ ] CSV 原始数据样例:导出问卷星 CSV,截图展示第一行变量名是否符合命名规范
- [ ] Jamovi/SPSS 变量定义截图:所有变量已配好 Measure type + Value Labels
- [ ] 反向题标记清单:列出所有反向题(字典标"是"),并约定其反转列为 原名_R
🏁 小结与自测 (Milestone Checklist)
- [ ] 我的所有变量名是全英文 + 下划线分隔 + 维度前缀
- [ ] 我的数据字典含完整 8 字段(变量名/标签/类型/取值/值标签/缺失/反向题/维度)
- [ ] 反向题原始列用普通名、字典标记"反向题=是",反转列统一加 _R 后缀(如 Anxiety_4_R)
- [ ] 我清楚反向题在录入阶段保持原值,反转操作在下一课清洗时做
- [ ] 我的缺失值统一用 99 或空白,没有与 0 混淆
- [ ] 我能用 Excel/CSV 数据导入 Jamovi/SPSS 并配好 Value Labels
