
简介这份资源面向SPSS初学者与需要开展统计分析的研究人员提供从入门到精通所需的数据文件与配套素材帮助读者在真实案例中练习数据清洗、描述统计、推断统计及回归、聚类等进阶方法。压缩包共84个文件以74个sav数据文件为主覆盖多个章节的练习数据另含6个xls表格、2个txt文本、1个xml目录文件与1个mdb数据库整体约461KB体积轻便便于按章节模块检索调用。目前已有1378人学习下载说明其在SPSS学习群体中具有一定参考价值。资源按章节组织数据配合医学、农业、教育等主题表格可支撑从基础操作到综合案例的完整练习适合希望边学边练、快速熟悉SPSS分析流程的读者使用。1. 从一份 SPSS 数据文件说起为什么它比 Excel 更值得你花时间很多人第一次接触 SPSS 数据分析卡住的地方不是统计方法而是手里那份.sav文件打不开、变量视图看不懂、值标签对不上。Excel 能打开的数据SPSS 不一定能直接读SPSS 存出来的.savExcel 打开又是一堆乱码。这份资源就是围绕「SPSS 数据分析数据文件」展开的核心解决三件事数据文件怎么读、变量和值标签怎么配、分析前怎么把数据整理成 SPSS 认的格式。它适合正在做问卷分析、实验数据统计、市场调研的从业者也适合刚上手 SPSS、被文件格式折腾过的新手。你不需要先精通统计先把文件这一关过了后面的描述统计、交叉表、回归才有意义。2. SPSS 数据文件的结构.sav 里到底装了什么2.1 数据视图与变量视图的双层结构SPSS 的数据文件不是一张单纯的表格它至少包含两层信息。第一层是数据视图也就是你看到的行和列行代表个案case列代表变量variable。第二层是变量视图它定义了每一列的名字、类型、宽度、小数位、值标签、缺失值、测量尺度。很多人从 Excel 导入后直接跑分析结果输出里全是数字而不是「男/女」「同意/不同意」问题就出在变量视图没配好。.sav文件本质上是 SPSS 的专有二进制格式它把数据矩阵和元数据变量定义、标签、缺失值标记打包在一起。这跟 CSV 只存纯文本不一样CSV 丢了元数据SPSS 读进去只能靠猜。所以如果你手里是 CSV导入时一定要走「文件 → 导入数据 → CSV」的向导让 SPSS 有机会让你确认变量类型和值标签。常见做法是拿到原始数据先别急着分析先在变量视图里过一遍。看每个变量的「类型」是数值还是字符串「值标签」有没有配「缺失值」有没有设。这三项没弄好后面所有分析都是空中楼阁。2.2 变量类型、测量尺度与值标签的对应关系SPSS 把变量按测量尺度分成三类名义Nominal、有序Ordinal、标度Scale。名义变量用于分类比如性别、行业有序变量用于等级比如满意度五级标度变量用于连续数值比如年龄、收入。这个分类不是学术摆设它直接决定 SPSS 给你跑什么图、什么检验。名义和有序变量默认走交叉表和卡方标度变量默认走均值比较和回归。值标签是另一层容易翻车的地方。比如你录入性别时用 1 和 2如果不配值标签输出里就是「1」和「2」读者根本不知道哪个是男哪个是女。配值标签的路径是变量视图 → 值标签列 → 点击单元格 → 添加「1男」「2女」。配完之后数据视图里仍然显示 1 和 2但所有输出表格和图表会自动替换成文字。下面这段是 SPSS 语法命令用来批量设置变量属性和值标签。比起在界面里一个个点语法更适合变量多、需要重复操作的场景。* 定义变量类型和测量尺度. VARIABLE LEVEL gender (NOMINAL) satisfaction (ORDINAL) age (SCALE). * 给性别变量添加值标签. VALUE LABELS gender 1 男 2 女. * 给满意度变量添加值标签. VALUE LABELS satisfaction 1 非常不满意 2 不满意 3 一般 4 满意 5 非常满意. * 设置缺失值. MISSING VALUES age (99). * 执行后保存为新的 .sav 文件. SAVE OUTFILEcleaned_data.sav.这段语法的逻辑是先声明测量尺度让 SPSS 知道每个变量该走什么分析路径再用VALUE LABELS把数字映射成文字然后用MISSING VALUES把 99 这类占位符标记为缺失避免它被当成真实年龄参与均值计算。最后另存为新文件保留原始数据不动。参数上VARIABLE LEVEL后面跟变量名和括号里的尺度类型VALUE LABELS后面跟变量名和成对的「数字 标签」每对之间用空格分隔行尾用句点结束。注意MISSING VALUES只对数值型变量生效字符串变量的缺失值需要用空白或特定字符串表示处理方式不同。3. 从 Excel/CSV 到 .sav导入、清洗与校验的完整链路3.1 导入向导里的四个关键决策点从 Excel 或 CSV 导入 SPSS走「文件 → 导入数据 → Excel/CSV」会弹出一个向导。这个向导里有四个决策点选错了后面要返工。第一第一行是否包含变量名。如果 Excel 第一行是「姓名、年龄、性别」勾选「从第一行读取变量名」如果第一行就是数据不勾。第二变量类型是自动识别还是手动指定。自动识别经常把「001」这样的编号识别成数值丢掉前导零如果编号需要保留格式手动指定为字符串。第三值标签是否从数据中读取。如果 Excel 里存的是「男/女」文字SPSS 会直接读成字符串如果存的是 1/2需要导入后手动配值标签。第四缺失值怎么表示。Excel 里的空单元格、NA、999 都可能代表缺失导入时要统一指定。我一般会先把 Excel 另存为 CSV再用语法导入因为语法可重复、可留痕。下面这段语法演示了从 CSV 导入并指定变量类型。* 从 CSV 导入数据指定分隔符和变量名行. GET DATA /TYPETXT /FILEraw_data.csv /ENCODINGUTF8 /DELIMITERS, /QUALIFIER /ARRANGEMENTDELIMITED /FIRSTCASE2 /VARIABLES id A10 gender F1.0 age F3.0 satisfaction F1.0 income F8.2. CACHE. EXECUTE.这段语法的关键是/VARIABLES子命令它逐个声明变量名和格式。A10表示宽度为 10 的字符串F1.0表示宽度为 1、小数位为 0 的数值F8.2表示宽度为 8、保留两位小数的数值。/FIRSTCASE2表示从第二行开始读数据第一行是变量名。/ENCODINGUTF8处理中文编码如果 CSV 是 GBK 编码这里要改成GBK否则中文会变乱码。3.2 数据清洗缺失值、异常值与重复个案导入之后不能直接跑分析至少要做三件事缺失值处理、异常值检查、重复个案排查。缺失值在 SPSS 里分两种系统缺失用户没填和用户缺失用户指定某个值代表缺失比如 99、-1。系统缺失在数据视图里显示为空白用户缺失需要手动设置。处理缺失值有三种常见策略整例删除、成对删除、替换。整例删除最保守只要一个个案在任何变量上有缺失就删掉样本量损失大成对删除只在当前分析用到的变量上删样本量保留多但不同分析的样本量不一致替换是用均值、中位数或回归插补填补适合缺失比例低的情况。异常值检查用描述统计和箱线图。FREQUENCIES看频数分布DESCRIPTIVES看均值和标准差EXAMINE看箱线图和极端值。如果年龄出现 200收入出现负数基本可以判定是录入错误。重复个案用「数据 → 标识重复个案」检查按关键变量比如 id排序重复的会生成一个新变量标记出来。* 检查缺失值和异常值. FREQUENCIES VARIABLESgender satisfaction /ORDERANALYSIS. DESCRIPTIVES VARIABLESage income /STATISTICSMEAN STDDEV MIN MAX. EXAMINE VARIABLESage income /PLOTBOXPLOT /STATISTICSEXTREME. * 标识重复个案. SORT CASES BY id. MATCH FILES /FILE* /BY id /FIRSTPrimaryFirst /LASTPrimaryLast. DO IF (PrimaryFirst). COMPUTE Duplicate 0. ELSE. COMPUTE Duplicate 1. END IF. EXECUTE.这段语法的逻辑是先用FREQUENCIES和DESCRIPTIVES快速看分布再用EXAMINE画箱线图找极端值。MATCH FILES配合FIRST和LAST标记重复个案PrimaryFirst为 1 表示该个案是第一次出现PrimaryLast为 1 表示最后一次出现。如果同一个 id 出现多次第一次之后的都会被标记为重复。参数上/ORDERANALYSIS让频数按数值排序而不是按频数排序/STATISTICSEXTREME输出极端值列表。注意MATCH FILES会改变数据顺序操作前先保存一份原始文件避免误操作后无法回退。3.3 用语法批量处理多份数据文件实际工作中经常遇到多份结构相同的文件比如每个月的问卷数据、每个班的考试成绩。一份份手动导入再合并效率低还容易漏。SPSS 语法支持用GET FILE循环读取再用ADD FILES纵向合并。下面这段演示了批量读取同一目录下的多个.sav文件并合并。* 定义文件路径列表. DEFINE !path() C:\data\ !ENDDEFINE. * 读取第一个文件作为基础. GET FILEC:\data\batch1.sav. * 依次追加后续文件. ADD FILES /FILE* /FILEC:\data\batch2.sav /FILEC:\data\batch3.sav /INsource. EXECUTE. * 用 source 变量标记数据来源. VALUE LABELS source 1 batch1 0 other.这段语法的核心是ADD FILES它把多个文件按行堆叠。/INsource会生成一个变量标记每条个案来自哪个文件方便后续按来源分组分析。参数上/FILE*表示当前活动数据集后面的/FILE依次列出要追加的文件。如果文件数量多可以用 Python 或宏循环生成语法避免手写几十行。4. 避坑与排查SPSS 数据文件最常见的五个翻车现场4.1 中文乱码编码不匹配的连锁反应现象导入 CSV 后中文变量名和值标签变成问号或方块。原因CSV 文件是 GBK 编码SPSS 默认按 UTF-8 读取。解决在导入语法的/ENCODING子命令里指定GBK或者先用记事本把 CSV 另存为 UTF-8。如果已经导入且乱码只能重新导入SPSS 不支持事后改编码。4.2 数值变量被识别成字符串现象明明录入的是数字SPSS 却当成字符串导致无法计算均值。原因Excel 单元格里混入了空格、逗号或文字或者第一行有合并单元格。解决导入时在/VARIABLES里手动指定F格式或者在 Excel 里用VALUE()函数清洗。如果已经导入用ALTER TYPE转换。* 把字符串变量转换为数值. ALTER TYPE age (F3.0). EXECUTE.4.3 值标签配了但输出不显示现象变量视图里配了值标签但交叉表里还是显示 1、2。原因值标签配在了错误的变量上或者输出表格设置了显示数值而非标签。解决检查变量视图里值标签是否配在目标变量上在输出表格上右键 → 表格属性 → 勾选「显示值标签」。另外如果变量是字符串型值标签不生效需要先转成数值型。4.4 缺失值被当成真实值参与计算现象年龄均值算出来是 45但实际数据里有大量 99。原因99 是用户自定义缺失值但没有在变量视图里设置。解决在变量视图的「缺失值」列里把 99 设为离散缺失值。设置后所有分析会自动排除 99。如果已经跑了分析需要重新跑。4.5 合并文件后变量对不上现象用ADD FILES合并两个文件后某些变量的值错位或丢失。原因两个文件的变量名相同但类型不同或者变量顺序不一致。解决合并前用DISPLAY DICTIONARY检查两个文件的变量字典确保同名变量类型一致。如果类型不同先用ALTER TYPE统一。变量顺序不影响ADD FILES它按变量名匹配但类型必须一致。* 查看变量字典检查类型和标签. DISPLAY DICTIONARY.5. 进阶技巧用语法和 Python 把数据文件处理自动化5.1 用 SPSS 语法做可复现的数据清洗流水线界面操作最大的问题是不可复现。今天点了一遍明天换台电脑就忘了步骤。语法文件可以保存、可以版本管理、可以重复执行。我一般会把数据清洗拆成三段导入段、清洗段、校验段。导入段负责读文件和指定变量类型清洗段负责缺失值、异常值、重复个案校验段负责输出描述统计和频数表确认清洗结果符合预期。三段写在一个.sps文件里用INSERT命令分步执行。* 主控语法按顺序执行三个子语法. INSERT FILE01_import.sps. INSERT FILE02_clean.sps. INSERT FILE03_validate.sps. EXECUTE.INSERT命令会把子语法文件的内容插入当前语法流相当于模块化编程。好处是每个子语法可以单独调试也可以组合成不同流程。参数上INSERT后面跟FILE和文件路径路径可以是绝对路径或相对路径。5.2 用 Python 扩展 SPSS 处理批量文件SPSS 内置了 Python 集成可以用 Python 脚本批量读取、转换、保存.sav文件。下面这段 Python 代码演示了遍历目录下所有.sav文件输出每个文件的变量数和个案数。# 导入 SPSS Python 模块 import spss import os # 指定数据目录 data_dir rC:\data # 遍历目录下所有 .sav 文件 for filename in os.listdir(data_dir): if filename.endswith(.sav): filepath os.path.join(data_dir, filename) # 打开文件 spss.Submit(fGET FILE{filepath}.) # 获取变量数和个案数 var_count spss.GetVariableCount() case_count spss.GetCaseCount() print(f{filename}: 变量数{var_count}, 个案数{case_count})这段代码的逻辑是用os.listdir遍历目录用spss.Submit执行 SPSS 命令打开文件再用spss.GetVariableCount()和spss.GetCaseCount()获取元数据。参数上data_dir换成你的实际目录filename.endswith(.sav)过滤非 SPSS 文件。如果文件有密码保护GET FILE会报错需要先解密。5.3 验证数据文件完整性的三个检查点处理完数据文件后怎么确认没出错我一般会做三个检查。第一个案数是否与原始数据一致。用GET FILE打开清洗后的文件看数据视图右下角的个案数跟原始文件对比。第二变量数是否与预期一致。用DISPLAY DICTIONARY列出所有变量逐个核对。第三关键变量的描述统计是否合理。比如年龄均值应该在 20 到 60 之间满意度均值应该在 1 到 5 之间。如果某个变量的最小值是 99说明缺失值没设好。* 输出关键变量的描述统计用于校验. DESCRIPTIVES VARIABLESage income satisfaction /STATISTICSMEAN STDDEV MIN MAX.这三个检查点花不了几分钟但能挡住大部分低级错误。从那以后我每次处理完数据文件都强制走一遍「个案数 → 变量数 → 描述统计」的校验流程宁可多花五分钟也不愿在分析结果出来后发现数据是错的。希望帮到你。本文还有配套的精品资源点击获取