SPSS宏自动化序列变量引用



我很难在SPSS中找到一个不基于变量的简单循环。

简而言之,我想写

!sequentialVars varStr=/Var/ i=/20/.

或类似,并获得:Var1 Var2 Var3 Var4 Var5。。。Var19 Var20放入cTable或其他任何使用变量名字符串的地方。

在伪VB中,它将是:

varString = "AnyVarName"
for i=1 to 20
  newVarList = concatenate(newVarList," ",varString, i)
next i

我甚至不能在SPSS循环中回显I,更不用说连接它了

谢谢!

下面的示例演示在宏中创建变量列表。它所做的是从1循环到n,并将数字连接到当前变量(base_i)的末尾。然后,只需为循环中的每个变量添加X1 + X2 ....。宏采用参数基变量和项数。

*making filler data frame.
data list free / V1 (F1.0).
begin data
1
3
5
end data.
dataset name input.
*making a vector list.
vector X(5,F1.0).
do repeat X = X1 to X5.
compute X = RV.BERNOULLI(0.5).
end repeat.
*what I want to do essentially.
ctables
/table X1 + X2.
*now to demonstrate looping through list.
DEFINE !loop_ctable (base = !TOKENS(1)
                     /n = !TOKENS(1))
!DO !I = 1 !TO !n
    !IF (!I = 1) !then
        !LET !base_stub = !concat(!base,"1")
    !ELSE
        !LET !base_i = !CONCAT(!base,!I)
        !LET !base_stub = !concat(!base_stub," + ",!base_i)
    !IFEND
!DOEND
ctables
/table !base_stub.
!ENDDEFINE.
set mprint on.
!loop_ctable base = X n = 5.

我可以想出一种方法在字母之间循环(至少在字母表的首字母之间),尽管希望这就足够了。

最新更新