您不能VECTOR
以这种方式使用,即在循环中使用GET
命令。VECTOR/LOOP
但是,您可以使用DEFINE/!ENDDEFINE。这是 SPSS 的原生宏工具语言,如果您不了解这一点,您很可能需要对它进行大量阅读并了解它的语法用法。
这是一个例子:
DEFINE !RunJob ()
!DO !i !IN 1 !TO 9
GET FILE = !CONCAT("Directory\D(",#i,").sav").
VALUE LABELS V1 to V8 !QUOTE(!ONCAT("some text D(",#i,")",
!DOEND
!ENDDEFINE.
SET MPRINT ON.
!RunJob.
SET MPRINT OFF.
DEFINE
和之间的所有代码!ENDDEFINE
都是宏的主体和接近结尾的语法,!RunJob.
然后运行并执行宏中定义的那些过程。
这是一个非常简单的宏的使用,没有分配参数/参数,但有更多复杂性的空间。
如果您是新手,DEFINE/!ENDEFINE
我实际上建议您不要花时间学习这一点,而是学习 Python 程序能力,与 DEFINE/!ENDDEFINE 相比,它可以相对轻松地实现相同(甚至更多)。
您的示例的 Python 解决方案如下所示(您需要将 Python 可编程性与 SPSS 集成):
BEGIN PROGRAM.
for i in xrange(1,9+1):
spss.Submit("""
GET FILE = Directory\D(%(i)s).sav
VALUE LABELS V1 to V8 'some text D(%(i)s)'.""" % locals())
END PROGRAM.
正如您会注意到的那样,python 解决方案要简单得多。