SPSS DO REPEAT - 简易教程与示例

作者:Ruben Geert van den Berg,发布在 SPSS A-Z 下。

DO REPEAT 是一个重复运行其他命令的命令。在 SPSS 中,DO REPEAT 常用于循环处理(可能是新的)变量。 VECTORSPSS 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.
  • 现在请注意,除了变量(d1d4)和数字(1 到 4)之外,这四个 COMPUTE 命令是相同的。
  • 这允许我们将它们替换为占位符。我们将它们称为 xy,但基本上任何名称都可以。现在,我们可以循环执行一个命令四次。
  • 第一次运行时,我们将占位符(xy)替换为(d1 和 1)。
  • 第二次运行时,占位符(xy)将被替换为(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 可以完成的所有事情也可以通过将 VECTORSPSS 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.