Hallo zusammen,
ich würde Euch gern um Hilfe bitten, was eine IF-Bedingung angeht.
Und zwar möchte ich eine Variable aus der Summe dreier anderer Variablen bilden. Die Variablen sind: ZASB, ZASD, ZHOW.
Es wäre super eine IF-Bedingung zu haben, für den Fall, dass eine oder zwei dieser drei Variablen, die ich aufsummiere, eine sysmis sind, dass sich der Summenwert dann aus den/der verbleibenden Variable zusammensetzt.
Meine aufsummierte Variable heißt SCI.
Wenn nun als Beispiel die Variablen ZASB und ZASD eine sysmis sind, hätte ich gern, dass sich die Variable SCI nur aus dem Wert ZHOW zusammensetzt.
Die Syntax, die ich dafür hätte ist:
compute SCI= SUM (ZASB, ZASD, ZHOW).
EXECUTE.
if (sysmis(ZASB) & sysmis(ZASD)) SCI=ZHOW.
leider geht das nicht auf.
Weiß Jemand vielleicht Rat?
Über einen Tipp würde ich mich sehr freuen!
Viele Grüße
If-Bedingung
-
- Beiträge: 939
- Registriert: 13.05.2008, 10:52
die funktion sum führt dazu, dass alle vorhandenen werte addiert werden, auch wenn werte fehlen. daher erhält ein fall, wo z.b. zasb fehlt, den wert sasd+zhow.
es sollte funktionieren, wenn man 2 if-bedingungen hintereinander schaltet. die formel mit +-zeichen einzugeben führt dazu, dass die summe nur gebildet wird, wenn alle 3 werte vorhanden sind. alternativ kann man auch die funktion sum so schreiben sum.3(zasb, zasd, zhow) wobei 3 dann bedeutet, dass 3 werte vorhanden sein müssen. nmiss zählt die anzahl der missings in der reihe der genannten variablen. eigentlich ist es dann doppelt gemoppelt, aber na ja.
if (sysmis(ZASB) & sysmis(ZASD)) SCI=ZHOW.
if (nmiss(zasb, zasd, zhow) = 0) sci=zasb + zasd + zhow.
execute.
es sollte funktionieren, wenn man 2 if-bedingungen hintereinander schaltet. die formel mit +-zeichen einzugeben führt dazu, dass die summe nur gebildet wird, wenn alle 3 werte vorhanden sind. alternativ kann man auch die funktion sum so schreiben sum.3(zasb, zasd, zhow) wobei 3 dann bedeutet, dass 3 werte vorhanden sein müssen. nmiss zählt die anzahl der missings in der reihe der genannten variablen. eigentlich ist es dann doppelt gemoppelt, aber na ja.
if (sysmis(ZASB) & sysmis(ZASD)) SCI=ZHOW.
if (nmiss(zasb, zasd, zhow) = 0) sci=zasb + zasd + zhow.
execute.