SPSS 转换命令快速入门
作者: Ruben Geert van den Berg
SPSS 中的转换命令(SPSS transformation commands),或者简称为“转换”(transformations),可以粗略地定义为当你运行它们时不会立即执行的命令。相反,SPSS 会记住这些命令,并在必要时才执行。下表概述了 SPSS 的主要转换命令。
SPSS 主要转换命令
命令名称 (Command Name) | 目标 (Goal) | 典型用法 (Typical usage) |
---|---|---|
COMPUTE | 创建变量 (Create variable) | 非常频繁 (Very frequently) |
RECODE | 创建变量 (Create variable) | 非常频繁 (Very frequently) |
IF | 创建变量 (Create variable) | 非常频繁 (Very frequently) |
COUNT | 创建变量 (Create variable) | 有时 (Sometimes) |
SELECT IF | 删除个案 (Delete cases) | 非常频繁 (Very frequently) |
SAMPLE | 删除个案 (Delete cases) | 非常少 (Very rarely) |
DO IF | 控制其他转换 (Control other transformations) | 有时 (Sometimes) |
DO REPEAT | 控制其他转换 (Control other transformations) | 频繁 (Frequently) |
LOOP | 控制其他转换 (Control other transformations) | 有时 (Sometimes) |
TEMPORARY | 控制其他转换 (Control other transformations) | 频繁 (Frequently) |
LEAVE | 控制其他转换 (Control other transformations) | 非常少 (Very rarely) |
ADD FILES | 合并数据 (Merge data) | 有时 (Sometimes) |
MATCH FILES | 合并数据 (Merge data) | 有时 (Sometimes) |
UPDATE | 合并数据 (Merge data) | 非常少 (Very rarely) |
DATA LIST | 定义新数据 (Define new data) | 少 (Rarely) |
INPUT PROGRAM | 定义新数据 (Define new data) | 非常少 (Very rarely) |
WRITE | 创建数据文件 (Create data file) | 非常少 (Very rarely) |
XSAVE | 创建数据文件 (Create data file) | 非常少 (Very rarely) |
SPSS 转换暂挂 (SPSS Transformations Pending)
为了更好地理解 SPSS 转换是什么,让我们运行一个。例如,让我们打开 age_income.sav 文件,并使用 COMPUTE
命令将年度收入计算为 income * 12
。我们将通过运行以下 语法 (syntax) 来实现:
compute yearly_income = income * 12.
运行命令后,生成的新变量似乎在数据视图 (data view) 中只包含 系统缺失值 (system missing values)。结果如下图所示。
请注意状态栏中的消息 “Transformations pending”(转换暂挂)。 SPSS 知道你运行了一个或多个转换,并且它会记住这些转换,直到实际需要执行它们。
SPSS 过程 (SPSS Procedures)
现在,让我们通过运行以下命令对我们的新变量运行一些基本的 DESCRIPTIVES:
descriptives yearly_income.
不出所料,我们现在在 输出查看器窗口 (output viewer window) 中看到,30 名受访者的平均年度收入为 € 30013,-。 也许更令人惊讶的是,yearly_income
的值现在出现在数据视图中,“Transformations pending”(转换暂挂)已消失。
显然,运行 DESCRIPTIVES
导致了我们暂挂转换的执行。 执行暂挂转换的命令在 SPSS 中统称为“过程 (procedures)”。 请记住,在 SPSS 中,“过程 (procedure)” 的含义与普通语言中的含义不同。 一个特殊的例子是 EXECUTE
,它除了执行暂挂的转换之外什么也不做。
为什么 SPSS 不在转换运行时立即执行它们? 根本原因在于这样做会使 SPSS 变慢,尤其是在包含大量个案的数据中。 这也意味着在不必要时使用 EXECUTE
会使你的语法变慢,尽管在现代计算机上,这种差异可能只有在大型数据集上才能注意到。
SPSS 转换 - 为什么要关注?
为什么要关心命令是转换、过程还是其他 SPSS 命令? 根本原因在于一些重要的 SPSS 命令只能与转换结合使用,而不能与过程结合使用。
例如,如果你尝试将 DESCRIPTIVES
放在 LOOP
中,你只会触发一个错误。
原因是 DESCRIPTIVES
是一个过程,你只能在 LOOP
中使用转换。 了解转换、过程和其他 SPSS 命令之间的区别可以避免此类错误以及它们在 SPSS 用户中引起的困惑。 也可以循环执行过程,但不能使用 LOOP
或 DO REPEAT
命令。 相反,应该使用 Python,多个因变量的回归分析 (Regression over Many Dependent Variables) 中展示了一个例子。
我们之前看到的概述中提供了一个不能与过程结合使用的命令列表。 它们被标记为“控制其他_转换_”。 TEMPORARY
不限于转换,但有关此的详细信息超出了本教程的范围。
SPSS 转换测试
好的,像 DO IF 和 DO REPEAT
这样的命令只能与转换结合使用。 但是你如何知道给定的命令是否是转换? 一种方法是,命令语法参考 (command syntax reference, CSR) 指示每个命令是转换、过程还是其他命令。 例如,下面的文本表示一个转换。
由于许多 SPSS 用户发现 CSR “难以理解”,因此另一种选择是简单地尝试:运行单个命令,看看它是否触发 “Transformations pending”(转换暂挂)通知。
当然,这种反复试验最初会花费一些精力。 但是,熟能生巧; 最终,弄清楚事物的工作方式将比花费的时间节省更多的时间。