SPSS – Zusatzzeilen: zwei Werte in der selben Variablen auf zwei Variablen auftrennen (Split Variable)

Im SPSS-Export werden als Ausnahme wegen der kompakten Form und der Technik der internen Speichern bei onlineumfragen.com Werte und Texte in Tabellenfragen mit Zusatzzeilen (z.B. «Andere: ____ O1  O2  O3  O4  O5») in einer Variablen gemeinsam gespeichert, und zwar in der Form:
dies ist der eingegebene Text,4

«dies ist der eingegebene Text» ist dann der Text, der von den Teilnehmenden eingegeben wurde und die «4» heisst, dass in der Skala der 4. Radiobutton ausgewählt wurde (entspricht der üblichen Codierung wie bei den oberen normalen Zeilen/Items).

Wie können bei Bedarf nun diese Zellen mit zwei Werten in zwei Zellen mit jeweils einem Wert aufgesplittet werden?

Die SPSS-Syntax dazu lautet anhand einem Beispiel für die Variable 14, die den Text «hallo,5» enthält:

STRING V14UT1splittext (A100).
IF (CHAR.INDEX(v14UT1,',') >= 1) V14UT1splittext=CHAR.SUBSTR(v14UT1,1,CHAR.INDEX(v14UT1,',')-1).
EXECUTE.
STRING V14UT1splitwert (A100).
IF (CHAR.INDEX(v14UT1,',') >= 1) V14UT1splitwert=CHAR.SUBSTR(v14UT1,CHAR.INDEX(v14UT1,',')).
EXECUTE.

Es werden dadurch zwei neue Variablen erzeugt, die Variable V14UT1splittext, die den Text enthält (im Beispiel «hallo»), und die Variable V14UT1splitwert, die den Wert enthält (hier «5»). Dies kann dann mit allen Variablen durchgeführt werden, die kombiniert gespeichert sind. Die Variablennamen müssen dann jeweils händisch abgepasst werden. Zu den Anweisungen noch im Detail:

STRING V14UT1splittext (A100).

Richtet die neue Variable V14UT1splittext als String-Variable (Texte) ein.

IF (CHAR.INDEX(v14UT1,',') >= 1) V14UT1splittext=CHAR.SUBSTR(v14UT1,1,CHAR.INDEX(v14UT1,',')-1).

Erzeugt in die neue Variable aus der bestehenden Variablen V14UT1 alles, was vor dem Komma steht.

STRING V14UT1splitwert (A100).

Richtet die neue Variable V14UT1splitwert als String-Variable (Texte) ein.

IF (CHAR.INDEX(v14UT1,',') >= 1) V14UT1splitwert=CHAR.SUBSTR(v14UT1,CHAR.INDEX(v14UT1,',')).

Erzeugt in die neue Variable aus der bestehenden Variablen V14UT1 alles, was nach dem Komma steht.

EXECUTE

…führt den Befehl jeweils aus.

 

Umcodieren des Exports (Excel/SPSS) von Sortierfragen

Wenn Sortierfragen exportiert werden, exportieren wir generell so, dass wir die Spalten als Rangplätze setzen (Spalte 1=Erster Rang, Spalte 2=Zweiter Rang, Spalte 3=Dritter Rang, etc.) und die Inhalte der Zellen dann die Ausprägungen angeben, z.b. 1=Audi, 2=Opel, 3=Mercedes, etc. In einigen Fällen kann es nützlich sein, einen Export aber umzucodieren. Nämlich so, dass die erste Spalte immer die erste Marke meint und die Inhalte der Zellen deren Rangplatz (Platz 1, Platz 2, Patz 3, usw.), die zweite Spalte immer die zweite Marke (z.B. Opel) und für jeden Teilnehmer deren Platz, usw. und die Inhalte der Zellen dann die Rangplätze angeben (1=auf dem ersten Platz, 2=auf dem zweiten Platz, etc.). Beispielsweise können damit dann in Excel oder SPSS durchschnittliche Rangplätze für jede Marke berechnet werden (Mittelwert über Spalte).

Beispiel normaler Export (Standardexport):

Wir möchten aber folgendes haben:

Wir erstellen dazu einen ganz normalen Export in Excel, welcher uns das erste Bild liefert (also die «Normalcodierung»). Dann fügen wir fünf neue Spalten rechts von den bisherigen 5 Spalten ein. Wir haben dann die fünf Spalten (blau, bisherig) und daneben 5 neue Spalten (grün, neu, leer):

Jetzt benötigen wir für die neuen Felder (grün) eine spezielle Formel. Sinn und Zweck der Formel ist es, aus dem grünen Bereich die entsprechenden Rangplätze herauszulesen und in Merkmale umzuwandeln und diese dann in die blauen grünen zu schreiben. Die Formel lautet für die Zelle G2 in obigem Bild:

=WENN(ISTFEHLER(VERGLEICH(1;$B2:$F2;0));"";VERGLEICH(1;$B2:$F2;0))

Wir beginnen innen:

VERGLEICH(1;$B2:$F2;0))

Diese Formel sucht den Wert «1» im Bereich $B2:$F2 (eigentlich könnte man schreiben B2:F2: der Raum, der die Antworten enthält. Wir schreiben aber zusätzlich das Dollarzeichen, damit Excel den Buchstaben B beim Kopieren in Zellen, die weiter rechts liegen, nicht erhöht. Wenn wir später die Formel von G2 nach H2 in die nächste Spalte kopieren wollen, soll dort der Bereich immer noch B2:F2 lauten. Ohne $ Zeichen würde Excel den Bereich nach C2:G2 abwandeln.) Die Null ganz hinten in der Formel gibt den Vergleichsmodus an. Null heisst hier, der Vergleich soll eine genaue Übereinstimmung ergeben.

Die Formel funktioniert so schon wunderbar und gibt für die Zelle G2 eine #NA zurück. Das ist leider nicht, was wir wollen, liegt aber daran, dass links im Bereich B2:F2 leere Zellen sind (missing values), mit denen die Formel (noch) nicht umgehen kann. Wir verwenden nun den Befehl  ISTFEHLER(formel), der je nachdem ob die Formel in Klammer einen Fehler zurückgibt oder nicht (bei uns jetzt «ja») entweder 0 (=kein Fehler) oder 1 (Fehler) zurückgibt. Darum herum packen wir jetzt noch eine WENN-Formel, die im Format WENN(Bedingung;JA-Teil;Nein-Teil) bei erfüllter Bedingung den Ja-Teil ausgibt  (Ja-Teil ist «», also nichts, denn wenn ein Fehler entsteht, soll einfach nichts geschrieben werden) – oder den Nein-Teil, wenn die Bedingung nicht erfüllt ist, also, wenn die Formel in der Mitte keinen Fehler ausgibt. Im Nein-Teil setzen wir dann ebenfalls ein, was ausgegeben werden soll: nochmals unsere Formel von oben.

So, genug erklärt: jetzt einfach die Formel in alle Felder kopieren (mit Copy/Paste).

Voilà! Wir haben nun in den Spalten G bis K jeweils die Werte für die Rangplätze (1=Erster Rang, 2=Zweiter Rang, 3=Dritter Rang, usw.) und als Spalten fixiert die Marken (V55=Audi, V55n1=Opel, V55n2Mercedes, etc.).

Natürlich kann SPSS eine solche Excel-Datei importieren (dazu zum Beispiel mit Merge Cases über die Interne-User-ID mergen). Die Case-Spalte würden wir dann am besten vorher wegschneiden.