SPSS DO REPEAT - 简易教程与示例
作者:Ruben Geert van den Berg,发布在 SPSS A-Z 下。
DO REPEAT
是一个重复运行其他命令的命令。在 SPSS 中,DO REPEAT
常用于循环处理(可能是新的)变量。 VECTOR
(SPSS VECTOR 命令)与 LOOP
结合是另一种实现相同目的的方法。
简介
- 假设我们有一个包含 1 到 4 值的变量,我们想为了 回归分析 将其二分化。(更多背景信息,请参阅 在 SPSS 中创建虚拟变量。)
- 一个非常基础的二分化方法是运行四个
COMPUTE
命令。这些命令在下面的 语法 的第二个代码块中进行了说明。(第一个代码块创建了一个小型测试数据集,用于演示目的。) - 有关这些
COMPUTE
命令结构的更多信息,请参阅 Compute A = B = C。
SPSS 语法示例
***1. 创建迷你测试数据。
**
data list free/original.
begin data
1 2 3 4
end data.
***2. 基础二分化。
**
compute d1 = original = 1.
compute d2 = original = 2.
compute d3 = original = 3.
compute d4 = original = 4.
exe.
***3. 可视化检查后,删除新变量。
**
delete variables d1 to d4.
- 现在请注意,除了变量(
d1
到d4
)和数字(1 到 4)之外,这四个COMPUTE
命令是相同的。 - 这允许我们将它们替换为占位符。我们将它们称为
x
和y
,但基本上任何名称都可以。现在,我们可以循环执行一个命令四次。 - 在第一次运行时,我们将占位符(
x
和y
)替换为(d1
和 1)。 - 在第二次运行时,占位符(
x
和y
)将被替换为(d2
和 2)。 - 以此类推,我们将遍历变量列表和数字列表。这两个列表并行处理。
- 一个鲜为人知的事实是,
END REPEAT PRINT.
将在输出窗口中显示生成的语法。 - 以下语法说明了这些要点。它使用来自第一个语法示例的测试数据。
SPSS Do Repeat - 语法示例 1
***使用 do repeat 对变量进行二分化。
**
do repeat x = d1 d2 d3 d4 / y = 1 2 3 4.
compute x = original = y.
end repeat print.
exe.
重构原始变量
- 请注意,通过使用
DO REPEAT
也可以轻松地反转二分化过程。 - 以下语法演示了如何执行此操作。它使用在上一个示例中创建的变量。
SPSS Do Repeat - 语法示例 2
***从二分变量重构原始变量。
**
do repeat x = d1 to d4 / y = 1 to 4.
if x = 1 reconstructed = y.
end repeat.
exe.
SPSS Do Repeat - 基本规则
- 正如我们所见,占位符可以引用整数列表、新变量、现有变量或它们的混合。但是,每个列表必须具有相同数量的项目。这是因为列表是并行处理的。
- 只有转换命令才能在
DO REPEAT
中使用。 - 以下语法建立在前面的示例之上。它演示了违反上述规则的情况。
SPSS Do Repeat - 错误的语法示例
***1. 违反 1:列表包含不同数量的项目。
**
do repeat a = v1 to v4 / b = 1 to 3.
compute a = b.
end repeat.
exe.
***2. 违反 2:do repeat 中存在非转换命令。
**
do repeat c = d_1 to d_4.
variable labels c "Dummy variable".
end repeat.
exe.
SPSS Do Repeat - 最终说明
- 本教程演示了如何使用
DO REPEAT
完成变量的二分化。这里的限制是,值标签(value labels)或 变量标签 必须手动应用于虚拟变量(dummy variables)。要自动应用这些标签,请使用 创建虚拟变量 工具。 - 实际上,使用
DO REPEAT
可以完成的所有事情也可以通过将VECTOR
(SPSS VECTOR 命令)与LOOP
结合来实现。后者通常更快、更通用,但也稍微难学一些。 - 您不能在
DO REPEAT
中使用DO REPEAT
。相反,对于这种嵌套循环,请使用LOOP
。 - 您在
DO REPEAT
中循环使用的转换命令_不一定非要_使用占位符。下面给出的示例将 字符串 中的所有双倍/三倍/四倍(等等,最多 8 倍)空格替换为单个空格。SPSS LOOP 命令 中展示了一种更简洁的方法来执行此操作。它没有建立在之前的示例之上。
SPSS Do Repeat - 语法示例 4
***1. 创建迷你测试数据集。
**
data list free/sentence(a45).
begin data
'a b c d e f g h i'
end data.
***2. 将双倍/三倍(等等)空格替换为单空格。
**
do repeat x = 1 to 8.
compute sentence = replace(sentence,' ',' ').
end repeat.
exe.