Kann ich bei der Berechnung einer neuen Variable einen Mittelwert bilden, bei dem für jeden in den Mittelwert eingehenden Wert eine Bedingung gestellt wird?
Also, in
MEAN (v1,v2,v3...v14)
soll
v1 nur eingehen, wenn a1>5
v2 nur eingehen, wenn a2>5
usw.
Einen "umständlichen" Weg kenne ich (also alle v-Variablen umkodieren, unter der Bedingung dass aX > 5, dann erst Mittelwert bilden). Da es aber verdammt viele Variablen und mehrere unterschiedliche Bedingungen sind, suche ich nach einem kürzeren Weg.
Danke schonmal
avo
Mittelwert mit Bedingung für jeden Einzelwert
-
avo
- Beiträge: 3
- Registriert: 13.12.2011, 11:23
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
ist mir jetzt nicht so klar, was genau die Bedingung ist. Ansonsten hier ein Skript:
oder sieht der Datensatz so aus:
bei verschiedenen Bedinungen:
Code: Alles auswählen
* generiert den Datensatz*
input program.
loop case =1 to 1000 by 1.
end case.
end loop.
end file.
end input program.
EXECUTE.
vector v(14).
DO REPEAT #i = v1 to v14.
compute #i =RV.BINOM(10,0.5).
END REPEAT.
EXECUTE .
*Ende des Datensatzes*
* Hier die Lösung:*
DO REPEAT #i = v1 to v14.
RECODE #i (5=SYSMIS).
END REPEAT.
EXECUTE .
COMPUTE mittelwert=MEAN(v1 to v14).
EXECUTE.
oder sieht der Datensatz so aus:
Code: Alles auswählen
* zweite Variante.
input program.
loop case =1 to 1000 by 1.
end case.
end loop.
end file.
end input program.
EXECUTE.
vector v(14).
vector a(14).
DO REPEAT #i = v1 to v14.
compute #i =RV.BINOM(10,0.5).
END REPEAT.
EXECUTE .
DO REPEAT #i = a1 to a14.
compute #i =RV.BINOM(10,0.5).
END REPEAT.
EXECUTE .
bei verschiedenen Bedinungen:
Code: Alles auswählen
IF (a1 = 5) v1=$SYSMIS.
IF (a2 = 3) v2=$SYSMIS.
IF (a3 = 1) v3=$SYSMIS.
* usw.
EXECUTE.
drfg2008
-
avo
- Beiträge: 3
- Registriert: 13.12.2011, 11:23
Der Datensatz sieht etwa so aus, wie in der zweiten Variante dargestellt. Die Bedingung, ob v1 in den Mittelwert aufgenommen wird, bezieht sich aus a1.
@drfg2008: es scheint, als ob Du mir in der ersten Variante das Umkodieren erleichtern möchtest. Das Umkodieren ist jedoch nicht so einfach, weil meine "realen" Variablen nicht einfach durchnummeriert sind.
Gibt es noch eine andere Möglichkeit?
Danke schonmal
avo
@drfg2008: es scheint, als ob Du mir in der ersten Variante das Umkodieren erleichtern möchtest. Das Umkodieren ist jedoch nicht so einfach, weil meine "realen" Variablen nicht einfach durchnummeriert sind.
Gibt es noch eine andere Möglichkeit?
Danke schonmal
avo
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
die müssen nicht durchnumeriert sein, solange sie nebeneinander stehen und gleiches Skalenniveau haben geht SPSS alle Variablen von v1 bis v14 durch (auch wenn dazwischen eine Variable sagen wir mal Micky_Maus heist)Das Umkodieren ist jedoch nicht so einfach, weil meine "realen" Variablen nicht einfach durchnummeriert sind.
... und wie die Bedingungen gesteuert werden sollen, müsstest du einmal sorgfältig an einem Datenbeispiel erläutern
drfg2008



