If statement DO IF,ELSE:未计算的ELSE

If statement DO IF,ELSE:未计算的ELSE,if-statement,spss,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)

只完成初始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. 数据集激活数据集1。 如果((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))。 计算FM_zero=1。 其他的 计算FM_zero=0。 结束如果。 执行。
不确定为什么没有计算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。

SPSS使用三值逻辑:正确、错误或不知道(sysmis)。 从语法参考手册。。。 DO IF或any ELSE IF上的逻辑表达式返回的值缺失导致控件传递到 在该点执行END IF命令


因此,一般来说,您应该在DO IF中首先进行sysmis测试,然后进行适当的ELSE IF/ELSE测试。

代码看起来不错。可能是您的数据/变量或逻辑操作错误。是否定义了所有变量?这篇来自IBM的文章:解释了当DO IF中的布尔表达式中未定义某些变量时“忽略”
Compute
计算的情况。我知道是这样,因为我是从SPSS point,click,add菜单中选择它们的。我找到的解决方案是最初将FM_zero设置为0。似乎在创建变量并将非1值设置为missing时,它不会接受“ELSE”来更改它们——也就是说,ELSE COMPUTE FM_zero=O。需要是…Sysmis(FM_zero)=0。知道为什么吗??