2

我很难让一个简单的循环在不基于变量的 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 ,更不用说连接它了。

谢谢!

4

1 回答 1

1

下面的示例演示了在宏中创建变量列表。它的作用是循环 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.

我可以想出一种遍历字母的方法(至少通过字母表的首字母),尽管希望这样就足够了。

于 2012-02-17T21:19:12.063 回答