SPSS 23 语法:简单宏循环



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

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

在它制作了 25 个副本后,我在每个副本上使用一堆 select if 命令来只选择我想要的情况,并通过 DATA25 将它们保存为 DATA1。

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

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

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

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

例如,以下宏将循环重复 25 次,在每个循环中它将转到原始文件,将其复制到名为 DATA# 的数据集,选择MyFilterVar=#的案例,并将案例保存到名为 Like 数据集的单独文件中:

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('MyPathDATA',!i,".sav")
save out=!quote(!FileName).
!doend
!enddefine.

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

dataset name orig.
CreateCopies.

最新更新