DO IF,ELSE:否则不计算

时间:2016-07-04 13:41:32

标签: if-statement spss

仅完成初始if语句变量计算 - 正在忽略ELSE部分。有人可以解释原因吗?非常感谢。

DATASET ACTIVATE DataSet1.
DO IF ((A1_SCN2_PR1_UE = 0 & A1_SCN3_PR1_UE = 0 & A1_SCN4_PR1_UE = 0 & A1_SCN5_PR1_UE = 0) | 
       (A2_SCN2_PR1_UE = 0 & A2_SCN3_PR1_UE = 0 & A2_SCN4_PR1_UE = 0 & A2_SCN5_PR1_UE = 0) | 
       (A3_SCN2_PR1_UE = 0 & A3_SCN3_PR1_UE = 0 & A3_SCN4_PR1_UE = 0 & A3_SCN5_PR1_UE = 0)).
Compute FM_zero = 1.
ELSE.
Compute FM_zero = 0.
End IF.
EXECUTE.

2 个答案:

答案 0 :(得分:1)

不确定为什么你的ELSE没有被计算,但是我建议你放弃DO IF并改为:

compute FM_zero = 
    ((A1_SCN2_PR1_UE = 0 & A1_SCN3_PR1_UE = 0 & A1_SCN4_PR1_UE = 0 & A1_SCN5_PR1_UE = 0) | 
    (A2_SCN2_PR1_UE = 0 & A2_SCN3_PR1_UE = 0 & A2_SCN4_PR1_UE = 0 & A2_SCN5_PR1_UE = 0) | 
    (A3_SCN2_PR1_UE = 0 & A3_SCN3_PR1_UE = 0 & A3_SCN4_PR1_UE = 0 & A3_SCN5_PR1_UE = 0)).

这将在所有真实案例中放置1,在所有错误案例中放置0。

答案 1 :(得分:1)

SPSS使用三值逻辑:True,False或者不知道(sysmis)。 从语法参考手册... DO IF或任何ELSE IF上的逻辑表达式返回的缺失值会导致控件传递给 那时的END IF命令。

所以一般来说,你应该把sysmis测试放在你的DO IF中,然后使用适当的ELSE IF / ELSE。