我需要创建一个运行一系列转换的语法循环
这是我需要做的简化示例
我想创建五个水果变量
橙= 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多个变量,因此手动执行操作需要花费一些时间。
答案 0 :(得分:1)
第一个循环可以放在DO REPEAT
命令中。基本上,您定义了两个变量列表,并且可以遍历if语句集。
DO REPEAT V# = V1 V2 V3
/VA = VX VY VZ.
if V# = 1 apple_variable = VA.
END REPEAT.
现在1
和apple_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{
...
}