2016-07-04 27 views
1

Nur die initiale if-Anweisung wird berechnet - der ELSE-Teil wird ignoriert. Kann jemand erklären warum? Danke vielmals.DO IF, ELSE: Sonst wird nicht berechnet

 
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

Code sieht gut aus. Wahrscheinlich sind es entweder Ihre Daten/Variablen oder die logische Operation, die fehlerhaft ist. –

+0

Sind alle Ihre Variablen definiert? Dieser Artikel von IBM: [DO IF, ELSE mit COMPUTE lassen einige Variablenwerte fehlen] (http://www-01.ibm.com/support/docview.wss?uid=swg21476060) erklärt den Fall des "Weglassens" von "Compute" 'Berechnungen, wenn einige Variablen in booleschen Ausdruck in DO IF undefiniert sind. – CiaPan

+0

Ich weiß, sie sind, weil ich sie aus SPSS Punkt ausgewählt, klicken Sie auf, Menü hinzufügen. Die Lösung, die ich gefunden habe, ist, FM_zero = 0 zunächst zu setzen. Es scheint, dass beim Erstellen der Variablen und Setzen der Nicht-1-Werte auf fehlende, wird es nicht akzeptieren "ELSE", um sie zu ändern - dh es scheint, dass ELSE COMPUTE FM_zero = O. müsste sein .. .Sysmis (FM_zero) = 0. Irgendeine Idee warum ?? – Yishoov

Antwort

1

nicht sicher, warum Ihre ELSE nicht wird berechnet, aber ich schlage vor, Sie das tun, wenn fallen lassen und auf diese Weise gehen statt:

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)). 

Dies wird eine 1 in allen wahren Fällen setzen und 0 in alle falschen Fälle.

1

SPSS verwendet dreiwertige Logik: True, False oder weiß nicht (Sysmis). Aus dem Syntax-Referenzhandbuch ... Fehlende Werte, die vom logischen Ausdruck bei DO IF oder bei einem ELSE IF zurückgegeben werden, bewirken, dass die Steuerung zu diesem Zeitpunkt an den END IF-Befehl an übergeben wird.

Also generell sollten Sie den Sysmis-Test zuerst in Ihrem DO IF und folgen Sie mit entsprechenden ELSE IF/ELSE.