Hallo zusammen,
ich habe einen Datensatz mit mehreren multinominalen Variablen. Für meine spätere Analyse benötige allerdings nur dichotome Variablen.
Bisher bin ich wie folgt vorgegangen:
Transformieren --> umkodieren in andere Variable
Allerdings haben einige Variablen mehr als 100 Ausprägungen, sodass ein manuelles Vorgehen unheimlich lange dauert. Eine beispielhafte Transformation wäre die Umwandlung der Variable "Staatsangehörigkeit" (1= Deutschland, 2= Frankreich, 3= Italien, ...., 162=Nepal) in einzelne dichotome Variablen nach der Form "Staatsangehörigkeit: Deutschland" (0= trifft nicht zu, 1= trifft zu).....
Gibt es hierfür eine Anwendung in SPSS bzw. eine Syntax die das Vorgehen automatisieren könnte?
Danke im vorraus!
Gruß
Geomo
multinominale Variable in einzelne Ausprägungen umkodieren
-
geomo
- Beiträge: 2
- Registriert: 26.09.2013, 19:29
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
@Tünnes: das war nicht die Frage
Ja, es gibt drei Möglichkeiten: Eine von IBM, eine umständliche per Excel und eine von mir. IBM und meine Lösung benötigen Python. Dazu musst du dir die "Python Essentials" von der IBM Website herunterladen und installieren. Je nach Version von SPSS und 32 bit oder 64 bit. Bei der neuesten Version von SPSS lässt sich das wohl auch direkt über das SPSS GUI herunterladen.
https://www.ibm.com/developerworks/comm ... Statistics
(Der Download Link ist hier etwas sehr versteckt: "here" anklicken, je nach Version).
Die Installation von Python Essentials ist übrigens sehr leicht (nur die exe anklicken).
Dann gibt es drei Möglichkeiten:
[1]
IBM-Version: IBM bietet etwas Ähnliches wie 'PlugIns' . Diese müssen in SPSS eingebunden werden. Dann verfügst du über ein Pull-Down Menü, mit dem du das bequem machen kannst. Der Syntax Befehl wäre dann auch sehr einfach, da dieser dann nur das interne PlugIn aufrufen muss.
Hier ist das Dummy Programm von IBM herunterladbar:
https://www.ibm.com/developerworks/comm ... e20ae424d4
Installation: (engl. GUI) Utilities -> Extension Bundles -> Install Extension Bundles
[2]
Du bastelst dir die vielen IF - Abfrage mit Hilfe von Excel zusammen. Excel hat diese wundersame Ergänzungsfunktion, wenn man Spalten oder Zeilen ergänzt.
[3]
Das folgende Programm habe ich mir geschrieben. Es benötigt die Python Essentials. Nenne einfach deine Variable um in "workflow" und dann geht alles automatisch.
Ja, es gibt drei Möglichkeiten: Eine von IBM, eine umständliche per Excel und eine von mir. IBM und meine Lösung benötigen Python. Dazu musst du dir die "Python Essentials" von der IBM Website herunterladen und installieren. Je nach Version von SPSS und 32 bit oder 64 bit. Bei der neuesten Version von SPSS lässt sich das wohl auch direkt über das SPSS GUI herunterladen.
https://www.ibm.com/developerworks/comm ... Statistics
(Der Download Link ist hier etwas sehr versteckt: "here" anklicken, je nach Version).
Die Installation von Python Essentials ist übrigens sehr leicht (nur die exe anklicken).
Dann gibt es drei Möglichkeiten:
[1]
IBM-Version: IBM bietet etwas Ähnliches wie 'PlugIns' . Diese müssen in SPSS eingebunden werden. Dann verfügst du über ein Pull-Down Menü, mit dem du das bequem machen kannst. Der Syntax Befehl wäre dann auch sehr einfach, da dieser dann nur das interne PlugIn aufrufen muss.
Hier ist das Dummy Programm von IBM herunterladbar:
https://www.ibm.com/developerworks/comm ... e20ae424d4
Installation: (engl. GUI) Utilities -> Extension Bundles -> Install Extension Bundles
Code: Alles auswählen
SPSSINC CREATE DUMMIES VARIABLE=month
ROOTNAME = month_
/OPTIONS ORDER=A USEVALUELABELS=YES.
[2]
Du bastelst dir die vielen IF - Abfrage mit Hilfe von Excel zusammen. Excel hat diese wundersame Ergänzungsfunktion, wenn man Spalten oder Zeilen ergänzt.
[3]
Das folgende Programm habe ich mir geschrieben. Es benötigt die Python Essentials. Nenne einfach deine Variable um in "workflow" und dann geht alles automatisch.
Code: Alles auswählen
AUTORECODE VARIABLES=workflow
/INTO workflow_rec
/PRINT.
BEGIN PROGRAM.
import spss, spssaux
variable="workflow_rec" # <-- put in the variable name here!
#variable="variable"
laufvariable="NBDPJLDAEHJFAOCHDGDFKFIL54848184463901c2dd25340dfcdbdf39"
dummy="dummy_" + variable +"_"
spss.Submit(r"""AUTORECODE VARIABLES="""+variable+""" /INTO """+laufvariable+""" .""")
n = len(spssaux.VariableDict([laufvariable])[0].ValueLabels)
spss.Submit(r"""
VECTOR """+dummy+"""("""+str(n)+""").
COMPUTE """+dummy+"""("""+laufvariable+""")=1.
EXECUTE .
""")
spss.Submit(r"""
RECODE """+dummy+str(1)+""" to """+dummy+str(n)+""" (MISSING=0).
EXECUTE.
""")
mydict = spssaux.VariableDict([laufvariable])[0].ValueLabels
for code, label in mydict.items():
befehl = "VARIABLE LABELS "+dummy+code+" ' "+label+" '."
print befehl
spss.Submit(befehl)
spss.Submit(r"""DELETE VARIABLES """+laufvariable+""".""")
END PROGRAM.
drfg2008
-
geomo
- Beiträge: 2
- Registriert: 26.09.2013, 19:29
vielen Dank drfg2008!
Genau solch eine Anwendung habe ich gesucht.
Leider taucht folgende Fehlermeldung auf wenn ich Option [1] und [3] ausführe:
">Fehlernummer 6887. Befehlsname: BEGIN PROGRAM
>Das externe Programm ist während der Initialisierung fehlgeschlagen.
>Die Ausführung dieses Befehls wurde gestoppt.
Please make sure that Essentials for Python has been successfully installed."
Hast du hierzu irgendwelche Tips?
Genau solch eine Anwendung habe ich gesucht.
Leider taucht folgende Fehlermeldung auf wenn ich Option [1] und [3] ausführe:
">Fehlernummer 6887. Befehlsname: BEGIN PROGRAM
>Das externe Programm ist während der Initialisierung fehlgeschlagen.
>Die Ausführung dieses Befehls wurde gestoppt.
Please make sure that Essentials for Python has been successfully installed."
Hast du hierzu irgendwelche Tips?
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
dann ist Python nicht richtig insalliert und kann nicht richtig gestartet werden:
Welche Version von SPSS hast du? (genaue Nummer, also etwa 20.02)
Welches Betriebssystem hast du (hoffentlich nicht Vista)
Welche Version der Essentials hast du heruntergeladen?
dann kommen wir ein Stück weiter
Welche Version von SPSS hast du? (genaue Nummer, also etwa 20.02)
Welches Betriebssystem hast du (hoffentlich nicht Vista)
Welche Version der Essentials hast du heruntergeladen?
dann kommen wir ein Stück weiter
drfg2008



