在一系列IF-ELSE IF语句中,只有第一个IF有效

时间:2019-01-16 03:17:17

标签: syntax spss

我试图从变量“ A”,“ B”和“ C”创建一个新变量“ X”。 这是我正在使用的代码。

我仅获得第一个选项“ VAS_USAGE = 1”,其他选项丢失。 我想要的是让VAS_USAGE具有1到6个值。
我究竟做错了什么?

 ```
compute VAS_USAGE=0.
DO IF ((VAS1=1) AND (VAS2=1) AND (VAS3=1)). 
COMPUTE VAS_USAGE=1.
ELSE IF ((VAS1=1) AND (VAS2=1) AND (VAS3=0)).
COMPUTE VAS_USAGE=2.
ELSE IF ((VAS1=1) AND (VAS2=0) AND (VAS3=1)).
COMPUTE VAS_USAGE=3.
ELSE IF ((VAS1=1) AND (VAS2=0) AND (VAS3=0)).
COMPUTE VAS_USAGE=4.
ELSE IF ((VAS1=0) AND (VAS2=0) AND (VAS3=1)). 
COMPUTE VAS_USAGE=5.
ELSE IF ((VAS1=0) AND (VAS2=0) AND (VAS3=0)). 
COMPUTE VAS_USAGE=6.
END IF.   
EXECUTE.```

这是嵌套表的外观。这就是我期望得到的。

enter image description here 这就是我得到的。

1.00 = 63

1 个答案:

答案 0 :(得分:1)

如@ user45392所建议,我将检查答案“是”和“否”是否确实编码为1和0。 无论如何,我都建议避免使用复杂的“如果”方案,该方案可能容易出错并且难以调试。例如,您可以这样创建VAS_USAGE:

compute VAS_USAGE = 100*VAS1 + 10*VAS2 + VAS3.

或者,如果您要坚持在帖子中提供的特定值,请添加以下内容:

recode VAS_USAGE (111=1)(110=2)(101=3)(100=4)(1=5)(0=6).

此外,如果您只想从1到8的简单索引,可以执行以下操作:

compute VAS_USAGE = 4*VAS1 + 2*VAS2 + VAS3 + 1.