创建SPSS循环函数

时间:2012-05-30 14:09:11

标签: syntax spss

我需要创建一个运行一系列转换的语法循环

这是我需要做的简化示例

我想创建五个水果变量

  • apple_variable
  • banana_variable
  • mango_variable
  • papaya_variable
  • orange_variable
V1中的

  • 苹果= 1
  • 香蕉= 2
  • 芒果= 3
  • 木瓜= 4
  • 橙= 5

    第一次循环

    IF(V1 = {number}){fruit} _variable = VX。

    IF(V2 = {number}){fruit} _variable = VY。

    IF(V3 = {number}){fruit} _variable = VZ。

    为下一个水果运行循环

所以我想要的是检查V1,V2或V3是否包含水果编号的脚本。如果其中一个(只有一个可以)新的{fruit} _variable应该从VX,VY或VZ获得值。

这可能吗?该脚本需要创建200多个变量,因此手动执行操作需要花费一些时间。

3 个答案:

答案 0 :(得分:1)

第一个循环可以放在DO REPEAT命令中。基本上,您定义了两个变量列表,并且可以遍历if语句集。

DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = 1 apple_variable = VA.
END REPEAT.

现在1apple_variable在上面的示例中是硬编码的,但我们可以将其转换为一个简单的宏语句来获取任意参数。

DEFINE !fruit (!POSITIONAL = !TOKENS(1)
             /!POSITIONAL = !TOKENS(1)).

DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = !1 !2 = VA.
END REPEAT.

!ENDDEFINE.

!fruit 1 apple_variable.

现在对于200多个变量来说仍然有点乏味,但应该大大简化任务。在我走到这一步之后,我通常只对文本进行文本编辑以调用宏200次,在这种情况下,它所需要的只是在数字和结果变量名之前插入!fruit。如果列表是静态的,这种方法很有效。

使用内置SPSS工具的其他方法(主要在定义的MACRO中循环)IMO往往很难看,可能会使代码大大复杂化并且经常不值得花时间(虽然肯定可行)。虽然如果你愿意接受使用python命令的解决方案,这会有所缓解。

答案 1 :(得分:1)

DO REPEAT在这里是一个很好的解决方案,但我想知道最终的目标是什么。这有点像一个问题,可以通过在Statistics中使用多个响应工具来解决,而无需经历这些转换。旧的MULTIPLE RESPONSE程序以及较新的CTABLES和Chart Builder工具中提供了多种响应功能。

HTH, 乔恩佩克

答案 2 :(得分:0)

循环语句的组合:for,while,同时使用嵌套的if..else和switch case就可以了。只需确保你有循环的初始值和最终值

让我们说:

for (initial; final; increment)
{
 if (x == value) {
   statements;
}else{
  ...
}