2012-05-30 202 views
2

我需要创建一个运行一系列的改造创建SPSS循环功能

这是我想创建五个果变量

什么,我需要做的

一个简化的例子语法环

  • apple_variable
  • banana_variable
  • mango_variable
  • papaya_variable
  • orange_variable
在V1

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

    第一环

    如果(V1 = {number}){fruit} _variable = VX。

    如果(V2 = {number}){fruit} _variable = VY。

    如果(V3 = {number}){fruit} _variable = VZ。

    明年水果运行循环

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

这可能吗?该脚本需要创建200多个变量,因此需要耗费大量时间来手动执行

回答

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

DO REPEAT是一个很好的解决方案,但我想知道最终目标是什么。这听起来像一个问题,可以通过在统计中使用多个响应设施来解决,而不需要经过这些转换。旧的MULTIPLE RESPONSE程序和更新的CTABLES和Chart Builder工具中提供了多重响应功能。

HTH, 乔恩·佩克

0

循环语句的组合:对,同时,做而嵌套的if..else和开关的情况下会做的伎俩。只要确保你有你的初始值和最终值的循环去

让我们说:

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