Fälle mit fehlenden Werten löschen

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
ak
Beiträge: 8
Registriert: 04.01.2013, 11:45

Fälle mit fehlenden Werten löschen

Beitrag von ak »

Hallo zusammen,

ich probiere nun seit mehr als 3 Stunden diese simple Aufgabe (Fälle löschen :evil: ) zu lösen. Weder im Forum, noch in Büchern noch bei youtube konnte ich finden, wie ich ganz einfach die Fälle (Versuchspersonen) löschen kann, welche bei irgendeiner Variable keine Angabe gemacht haben. Sobald bei einer Variable Daten fehlen, sollte der Datensatz dieser Person aus der Datei gelöscht werden.

Meine SPSS (Version 19)-Datei hat 95 Variablen und 1100 Datensätze (Versuchspersonen bzw. TeilnehmerInnen). Ein paar Dutzend fehlende kann ich verschmerzen.

Wie bekomme ich diese Datensätze aus meiner Datei gelöscht?


VG, Andreas.
Frido
Beiträge: 346
Registriert: 25.09.2012, 15:04

Beitrag von Frido »

Hi Andreas,

grundsätzlich kannst du hiermit diejenigen Fälle löschen, die in einer der angebenen Variablen leer sind:

SELECT IF NOT (SYSMIS(v1)) or NOT (SYSMIS(v2)) or NOT (SYSMIS(v3)) or NOT (SYSMIS(v4)) or NOT (SYSMIS(... usw. ...)).
ak
Beiträge: 8
Registriert: 04.01.2013, 11:45

Beitrag von ak »

Hallo Frido,

danke für Deine schnelle Antwort. Nach dem 14.01. werde ich die Chance haben, Deine Syntax auszuprobieren.

Bei v1, v2 etc. trage ich meine Variablennamen ein, oder? Das werde ich dann 95 mal machen müssen (da 95 Variablen) oder gibt es dafür auch die Möglichkeit, dass über eine Prozedur generieren zu lassen?

VG, Andreas
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

nein, das muss man nicht 95mal manuell rechnen!
Hier eine Lösung:

Code: Alles auswählen

compute check =0.
EXECUTE.

do repeat  #i = v1 to v9.
COMPUTE check = check + SYSMIS(#i).
END REPEAT.
EXECUTE.

SELECT IF check EQ 0.
EXECUTE.
ggf. selbst vergebene 'Missings' erst in system missings recodieren:

Code: Alles auswählen

do repeat #i = v1 to v6.
RECODE #i (9999=SYSMIS).
END REPEAT.
EXECUTE.
drfg2008
ak
Beiträge: 8
Registriert: 04.01.2013, 11:45

Beitrag von ak »

Hallo Frido & drfg2008,

vielen Dank für Euren schnellen Antworten. Das einfache Arbeiten mit dem SELECT-Befehl von Frido wird immerhin ausgeführt (=die Syntax läuft ohne Fehlermeldung durch). Leider werden keine Fälle gelöscht, es passiert im Prinzip gar nichts mit den Daten.

Die Variante von drfg2008 erscheint mir sehr elegant, erzeugt aber folgende Fehlermeldung:

>Fehler Nr. 4530. Befehlsname: do repeat
>Dieser Befehl ist innerhalb von DO REPEAT/END REPEAT nicht zulässig. Der
>Befehl wird ignoriert.
>Die Ausführung dieses Befehls wurde unterbrochen.


Könnt ihr mir sagen, wo ich etwas über die Logik des SELECT-Befehls nachlesen kann? Mir scheint es nur ein Kommando zur Auswahl zu sein, nicht aber zum Löschen.

Oder muss ich noch einen Befehl zum eigentlichen Löschen anschließen?

VG, Andreas
ak
Beiträge: 8
Registriert: 04.01.2013, 11:45

Entwarnung!

Beitrag von ak »

Hey,

nun hat es doch geklappt! Vielleicht lag es am fehlenden Leerzeichen bei "compute check =0." ? Keine Ahnung, jedenfalls läuft die Syntax jetzt super durch und tut, was sie soll, yuhuu!

Gibt es eigentlich eine Möglichkeit diesen Vorgang rückgängig zu machen? Bisher speichere ich vor jedem Schritt die sav-Datei, um nichts ausversehen zu löschen...

VG, Andreas.
Frido
Beiträge: 346
Registriert: 25.09.2012, 15:04

Beitrag von Frido »

Indem du die "alte" Datei wieder öffnest.
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten