SPSS宏自动化顺序变量引用

时间:2012-02-16 20:52:23

标签: loops macros 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 个答案:

答案 0 :(得分: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. 。宏接受参数基础变量和项目数。

{{1}}

我可以想出一种循环字母的方式(至少通过字母表的首字母),尽管这很有希望。