Spells filtern mit SPSS

Hallo,
Ich arbeite mit einem Längsschnittdatensatz in SPSS und möchte einige Fälle herausfiltern. Es sind zu viele um das per Hand zu machen, aber den normalen Filter „Fälle auswählen“ kann ich auch nicht benutzen, da die Informationen zu einer Person (die Ereignisse) über mehrere Zeilen hinweg angeordnet sind. SPSS erkennt mehrere zu einer Person gehörige Zeilen nicht als „Block“. Was könnte ich noch tun, um tausende Fälle per Hand durchzugehen?

Vielen Dank!

SPSS hat eine sehr gute Filterfunktion:
„Select if“ - in der Makrosprache, damit kann man auch viele Bedingungen eingeben und sehr spezifische Fälle herausssuchen.

Viel Erfolg.
Günther Zier, mag.psy.

Hallo haps674,

Ich vermute du hast deine Daten so geordnet:

Fall 1:
id1 t1
id1 t2
id2 t1
id2 t2

bzw. Fall 2:

id1 t1
id2 t1
id1 t2
id1 t2

Die Daten sollten wie in Fall 1 angeordnet sein, wenn nicht (zB wie in Fall 2), dann kannst du sie durch Sortieren in die richtige Reihenfolge bringen.

Schreibe dann die Daten raus, zB als CSV und lies sie wieder ein, stelle nun aber sicher, dass du SPSS mitteilst, dass pro Person mehrere Datenzeilen vorliegen (du musst die Variable ID dann mehrmals benennen (zb ID_Zeile1, ID_Zeile2 etc., entsprechend auch mit den anderen Vars verfahren). Nun hast du einen neuen Datensatz mit der richtigen Anzahl von Fällen).

Dieses Verfahren würde ich empfehlen, wenn du für jede ID gleich viel Wiederholungsmessungen hast und du die Daten auch in dieser Form weiter verwenden wirst.

Eine 2. Möglichkeit ist, dass du eine Datei generierst, die nur die ID als Variable hat. Hier löschst du alle IDs, die du nicht haben willst und machst dann ein ‚Merge‘ mit der Option, dass nur vollständige Datensätze aufgenommen werden. Ich habe das nicht getestet, sollte aber gehen.

Gruß, Walter.

Hallo,

deine Angaben sind ein bisschen vage.

Wenn filtern in SPSS nicht geht - weshalb filterst du nicht in Excel (oder so) und legst die Daten die du auswerten willst als neuen Datensatz an.

Grüße
Robert

Hallo,
tut mir Leid, ich bin überhaupt kein Fachmann für SPSS.

Gruß, Andreas

Hallo haps674,

In jeder Zeile Deines Datensatzes sollte eine Variable existieren, welche die Identität der Person bestimmt (z.B. VPN_NR = 1). Mit dieser Variable kannst Du alle Fälle dieser Person ausschließen.

Oder verstehe ich Deine Frage nicht richtig?

Neugierig,
Kutya

Hi,

du kannst versuchen, die Infos in einer weitere Variablen zu aggregieren/kodieren um dann nach diesen zu filtern.

Grüße,
JPL

Hi,

wahrscheinlich waren das doch zu wenig Infos. Also es sieht so aus:
VPN-NR Ereignis SPELLNR
1 a 1
1 b 2
1 c 3
2 c 1
2 a 2
3 d 1
3 a 2
3 b 3
3 a 4

Wenn ich nun Fälle auswähle z.B. Ereignis=b, dann wählt SPSS die ZEILE und nicht die PERSON aus.

Ich habe bisher den Hinweis bekommen, die Daten aus einer Textdatei neu einzulesen und SPSS zu sagen, dass gleiche VPN-Nummern zu einer Person gehören. Wie man das macht, weiß ich zwar noch nicht, aber evtl. finde ich das auch noch heraus. Oder gibt es noch einen anderen Ansatz?

Danke!

hallo!
ohne zu wissen, was für daten in den zellen stecken und wie der datensatz aussieht und welche kriterien du für die auswahl hast, ist die antwort schwierig!!

für den fall, dass die informationen über eine Person zwar in mehreren Zeilen stecken, dass jede Info aber eine neue Variable ist, kannst du die „fälle auswählen“ funktion nutzen , wenn auch nicht durch reines durchklicken. du musst eine kleine syntax schreiben, die nach dem muster verfährt „select if var1 = ?? or var2 = ???“ und hast dann nur die fälle, auf die das zutrifft.
du könntest die fälle auch rauswerfen, indem du über „compute“ eine neue variable erstellst, die immer dann ein „fehlender wert“ ist, wenn die bedingung var1 = ?? oder var2 = ??? erfüllt ist. das muss wahrscheinlich auch über eine syntax gemacht werden.
alternativ, falls alles untereinander steht, fällt mir nur die nicht so schöne idee ein, eine dummyvariable zu erstellen - haben alle fälle immer die gleiche zeilenanzahl? dann könnte man eine variable erstellen, die von oben nach unten durchzählt vom der ersten zeile eines falls bis zu letzten zeile, danach eine select if- syntax siehe oben.

grüße,
sonja

antwort II :smile:
so, nachdem ich die neuen infos gelesen habe:
ich weiß nicht, nach welchem kriterium du filtern willst, aber
meine idee dazu immernoch: syntax schreiben „select if“, aber mit einer „und-verbindung“, also die fälle auswählen, in denen bspw. „ereignis= b und spell = 1“
da kann man auch reinschreiben, dass spss z.B. die fälle auswählen soll, in denen eine var keinen fehlenden wert hat „select if ereignis = b & notmissing varx“ oder wie du das brauchst für deine analyse, auch kompliziertere verknüpfungen bzw. auswahlkriterien sind denkbar.

grüße,
sonja

Danke, aber SPSS wählt dann doch nur eine ZEILE aus. Bei mir sieht es so aus:

Person__Ereignis
1_______a
1_______b
1_______c
2_______c
2_______a

Wenn ich nun sagen würde select if Ereignis=b, dann würde SPSS doch nur die zweite Zeile wählen und die restlich Informationen zu Person 1 ausblenden. Oder gibt es da eine Möglichkeit?

Vielen Dank!

Hallo Walter,

Danke für deine Antwort.

Also mein Datensatz sieht folgendermaßen aus:

ID : SPELLTYP : SPELLNR
1 : a : 1
1 : b : 2
2 : b : 1
2 : a : 2
2 : c : 3
3 : c : 1
3 : a : 2

Daten rausschreiben ist ok, aber wie teile ich SPSS beim Wiedereinlesen mit, dass pro Person mehrere Zeilen vorhanden sind? Durch SPELLNR ist ja jede Zeile pro Person durchnummeriert. Ich habe auch schon herausgefunden, dass man das machen muss, ist nun so, aber es hilft mir auch nicht weiter :frowning: Für jede ID gibt es unterschiedlich viele Zeilen.

Deine zweite Möglichkeit ginge zur Not auch, aber es sind immerhin ca. 94.000 Zeilen die dann durchgeschaut werden wollen :-o

Gruß haps674

SPSS kann in der „select if“ Bedingung auch mehre Ausprägungen auswählen.
z.B. select if ((x=a) or (x=b)).
Allerdings konnte ich bei meiner alten Version von SPSS einige Fehler beobachten, aber das kann auch von Windows herkommen. Die Klammern erhöhen die Sicherheit, dass die Auswahl richtig und vollständig getroffen wurde.
Eine weitere Möglichkeit besteht mit „DO IF“ Anweisungen eine neue Variable zu berechnen, die dann nur mehr eine einzige Selektionsbedingung erhält. (SPSS hat dabei nur sehr selten Fehler gemacht.)

Beispiel: (es können mehrere Variable als Kriterium herangezogen.)
DO IF ((x=1) or (y=2)).
compute neue_var = 1.
else compute neue_var = 0.
END IF.

Select if (neue_var = 0).

Eine dritte Möglichkeit besteht darin,
mehrere „select if“ Bedingungen hintereinander einzusetzen. Aber damit wird die Stichprobe auf Fälle reduziert die in ALLEN selektierten Bedingungen stimmen müssen.

Als vierte Möglichkeit:
Jeweils nach einem Kriterium die Fälle auswählen und in eine eigene neue Datei schreiben lassen. Und dann alle diese Teil-Dateien wieder zusammensetzen.

Viel Erfolg
Günther Zier, mag.psy.

@für jede ID gibt es unterschiedlich viele Zeilen.

Das hatte ich befürchtet. Da hilft m.E. nur Programmieren. Das wäre in SPSS zu lösen, in anderen Sprachen (zB Perl) wäre das aber viel eleganter zu lösen.

Hast du mal in SPSS-Foren geschaut. Da gibt es teilweise auch geniale Lösungen. Ich habe leider nicht die Zeit für dich zu suchen.

Gruß, Walter.

Jetzt verstehe ich Dein Problem. Du möchtest Deinen Datensatz so verändern, dass er nachfolgende Struktur aufweist, richtig?

VPN_NR Ereignis_SP1 Ereignis_SP2 Ereignis_SP3 Ereignis_SP4
1 a b c -
2 c a - -
3 d a b a

Das ereichst Du in SPSS mit Hilfe des Kommandos AGGREGATE:

(1) Zunächst bildest Du die neuen Variablen Ereignis_SP1, Ereignis_SP2, Ereignis_SP3 und Ereignis_SP4 und weist ihnen jeweils nur in den Cases einen Wert zu, in denen die SPELLNR mit der Endung der Variablen übereinstimmt.
(2) Nun fasst Du alle Fälle einer Versuchsperson mit Hilfe von AGGREGATE zusammen, wobei Du für die Variablen Ereignis_SP1, Ereignis_SP2, Ereignis_SP3, Ereignis_SP4 jeweils die Aggeregate-Funktion „first“ wählst, während Du die Variablen Ereignis und SPELLNR weglässt (Option „drop“).

Allerdings rate ich Dir, dies noch einmal in einem der vielen Einführungsbücher für SPSS nachzulesen. Einem Anfänger unterlaufen bei diesen Operationen schnell kleine Fehler, welche die Daten aber stark verzerren können.

Einen anderen Weg zur Längsschnittanalyse gibt es in SPSS meines Wissens nicht. Dafür müsstest Du auf ein komplexeres Analyseprogramm (z.B. GenStat, GNU-R) umsteigen.

Viele Grüße,
Kutya

hallo
ich habe leider keine ahnung von spss. sorry!

Sorry, aber da kann ich dir nicht weiter helfen. gruß Robert