服务指南

研究数据字典怎么写清变量、编码和缺失值?

用简化问卷数据表展示变量字典的列名、取值、缺失码与版本说明。

研究数据字典是一份解释数据表每一列的说明书。一张名为“调查结果.xlsx”的表,无法说明“Q7”“99”或空格各代表什么。字典把变量名称、含义、类型、允许值和缺失规则放在一处,后来复核、清洗数据的人就不用猜。哈佛医学院的数据管理指南也把它视为帮助他人理解数据结构与变量定义的文档。

从数据表已有的列开始写

先把数据表中的列名逐一抄入字典,保持拼写完全一致,再给每列一个普通读者能懂的名称。若列名为 visit_count,说明它是“观察期内到馆次数”还是“问卷自报到馆次数”;两者数字相同,含义却不同。接着写数据类型、单位与取值范围,例如整数、次/月、零及以上。日期是填报日还是事件发生日,也必须说明。派生变量还应写出从哪些原始列计算、计算规则何时改变,不能只写“系统生成”。

下面是一份自拟的简化示范,研究对象为某课程的匿名问卷:

| 列名 | 含义与类型 | 有效值 | 特殊值或备注 | | --- | --- | --- | --- | | case_id | 匿名答卷编号,文本 | 不重复的代号 | 不含姓名学号 | | attend_n | 填表当月参加课程活动次数,整数 | 0 及以上 | 空值表示未填写 | | task_done | 是否完成指定任务,整数 | 1=是;0=否 | 8=未被问到;9=拒答 | | score_avg | 两题得分的平均值,小数 | 0—5 | 仅在两题均有效时计算 |

这张表不是现成的通用编码标准。特别是 8、9 的含义,必须在真实数据文件里与字典一致;若“完成任务”的有效值也可能是 8 或 9,就不能继续用它们代表缺失。ICPSR 的社会科学数据准备指南建议区分不同缺失原因,并让缺失代码与字段类型、有效范围相容。空白、拒答、题目跳过和录入错误是不同情况,混成一个 0 会把“没有完成”与“没有回答”误算为同一组。

字典里还应留下变化记录

问卷第七题若在试测后改了选项,不要悄悄沿用旧变量解释。可以在字典注明版本、适用的采集批次和新旧取值如何对应;无法对应时明确标出不可直接合并。若数据在共享前去掉姓名或重新编码,字典应描述共享文件中的列,不应附上可以反查个人身份的密钥。保留原始字典和变更记录,才看得出清洗或重新编码发生在何时。

还要用一行真实格式的测试数据试读字典。例如 task_done=8 应被解释为题目未向该人提问,而不是未完成任务;score_avg 为空时,应能查到究竟是原始题目缺失,还是计算尚未执行。字典解释不了这些情况,就补充规则或另设状态列。

完成后用“没有参与收集的人能否读懂”来验收:给同学一行数据和字典,让他解释每个值表示什么、哪些值不应参加均值计算、派生列怎样得来。若还要靠作者口头补充规则,字典就缺了内容。资料库或课程可能有自己的字段模板,按其格式提交即可,但上述含义不能省掉。