2016-07-04 23 views
1

只有最初的if語句變量計算正在完成--ELSE部分被忽略。有人能解釋爲什麼嗎?非常感謝。DO 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. 
+0

代碼看起來很好。這可能是你的數據/變量或邏輯運算錯誤。 –

+0

是否定義了所有變量?本文來自IBM:[DO IF,ELSE與COMPUTE保留了一些變量值](http://www-01.ibm.com/support/docview.wss?uid=swg21476060)解釋了'省略'計算的情況'當DO IF中的布爾表達式中某些變量未定義時進行計算。 – CiaPan

+0

我知道他們是因爲我從SPSS中選擇了他們點,點擊,添加菜單。 我找到的解決方案是最初設置FM_zero = 0。 似乎在創建變量並將非1值設置爲丟失時,它不會接受「ELSE」來更改它們 - 即看起來ELSE COMPUTE FM_zero = O.將需要.. .Sysmis(FM_zero)= 0. 任何想法爲什麼? – Yishoov

回答

1

不知道爲什麼你的ELSE不被計算,但我建議你放棄了做,如果去,而不是這樣:

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

SPSS使用三值邏輯:True,False或不知道(sysmis)。 從句法參考手冊... 缺少由DO IF或任何ELSE IF上的邏輯表達式返回的值會導致控制傳遞給 END IF命令。

因此,一般來說,您應該先將sysmis測試放在您的DO IF中,並按照適當的ELSE IF/ELSE進行操作。