SPSS 23 语法:简单宏循环

SPSS 23 syntax: Simple Macro loop

我有一个数据集,我需要将案例分成几个不同的文件。 目前我是 运行:

DATASET COPY DATA1 WINDOW = FRONT.
... (repeats) ...
DATASET COPY DATA25 WINDOW = FRONT.

复制 25 份后,我在每个副本上使用一堆 select if 命令来仅选择我想要的案例,并将它们保存为 DATA1 到 DATA25。

我想做的是设置某种宏或循环,这样我就可以说:

 LET %X = 1 to 25
    loop
    DATASET COPY DATA'%X' WINDOW = FRONT.
    end loop

而不是需要 25 行几乎相同的语法。这只是一个非常简单的用例,但我希望我可以从那里分支出来并使用这种语法做一大堆其他事情,例如打开多个文件,我可以在其中为更改的文件名,或使用通配符以便我可以打开 'sheet 1' 和 excel,然后重复第 2 到 10 页。 这是我可以用 SPSS 做的事情吗?我需要 Python 或 R 扩展名吗?到目前为止,我所看到的一切都只能让您循环 运行 一组针对一系列变量的命令。

如果您使用的是 SPSS 23 版,则不需要安装 Python 扩展,它包含在原始 SPSS 安装中。 如果您不想使用 Python 或 R,您可以使用 SPSS 宏单独使用语法进行描述 - 查找 !define - !enddefine.

例如,下面的宏将重复循环25次,在每个循环中它会转到原始文件,将其复制到名为DATA#的数据集,select例MyFilterVar=# ,并将案例保存到一个单独的文件中,该文件的名称类似于数据集:

define CreateCopies ()
!do !i=1 !to 25
dataset activate Orig.
dataset copy !concat('DATA',!i).
dataset activate !concat('DATA',!i).
select if MyFilterVar=!i.
!let !FileName=!concat('MyPath\DATA',!i,".sav")
save out=!quote(!FileName).
!doend
!enddefine.

定义宏后,您需要命名原始文件,然后调用宏:

dataset name orig.
CreateCopies.