SPSS

<< Click to Display Table of Contents >>

Navigation:  Daten und Datensatz > In- und Output von Datensätzen >

SPSS

SPSS-Datensätze (Dateiformat: .sav) haben sich als Format zur Datenweitergabe in der Sozial- und Marktforschung etabliert, und werden von GESStabs selbstverständlich unterstützt. Eine Besonderheit der Implementierung bei GESStabs ist die Möglichkeit, mehrere SAV-Datenfiles hintereinander zu lesen, wobei sich die Variablenstruktur von Welle zu Welle unterscheiden darf.

Inhalt:

Input von SPSS-Datensätzen

Output von SPSS-Datensätzen

Output von SPSS-Syntaxdateien

Weiteres zur Arbeit mit SPSS-Datensätzen


Daten-Input

SPSSInfile

Einlesen eines Datensatzes in SPSS-Dateiformat.

Syntax:

SPSSINFILE  [ FILEKEY <key> ] = <filepath>;

Alle Variablen des SAV-Files werden unter dem dort vereinbarten Namen als GESStabs-Variablen erzeugt, dabei werden VARLABEL und VALUELABEL übernommen. Alle SPSS-Variablen gelten in GESStabs als atomare Variablen; Mehrfachnennungsvariablen muss man ggf. selbst im Script zusammensetzen. Es werden numerische und CHAR-Variablen unterstützt; letztere werden zu ALPHA-Variablen.

Es können in einem GESStabs Lauf beliebig viele SPSSINFILE-Statements auftreten; diese Dateien werden dann nacheinander abgearbeitet. Das System kommentiert mögliche Fehler: Variablen, die nicht in allen Files auftreten, und VALUELABELS, die in verschiedenen Files voneinander abweichen.

FILEYKEY erlaubt die ausgewählte Zuordnung verschiedener Datensätze (mehrere SPPSINFILEs, OPENQFILEs und ASSOCFILEs) über mehrere Befragungswellen hinweg (siehe OPENQFILE).

Technischer Hinweis:
Voraussetzung für die Verwendung des SPSSINFILE-Statements ist, dass die notwendigen DLL-Dateien (u.a. SPSSIO32.DLL) vom System gefunden werden kann (z.B. durch Ablage im GESStabs-Verzeichnis). Siehe hierzu: Installation von GESStabs.

SPSSVarlabToText

Handhabung der Variablenlabel (aus SPSS)

Syntax:

SPSSVARLABTOTEXT = [ YES | NO | COPY ];

Wird dem SPSSINFILE-Statement vorangestellt.

SPSS kennt keine Variablentexte, sondern nur VARLABEL. In neueren Versionen kann man darin aber schon ganze Texte versenken. Wenn man diese VARLABEL in GESStabs als Fragentexte verwenden will, kann man das mit dieser Option erreichen.

Für die Handhabung der SPSS-Varlabel in GESStabs bestehen folgende Optionen:

NO –> Vartitle
YES –> Vartext
COPY –> Vartitle und Vartext

LabelsToTitle

Übertrag der Labeltexte (aus SPSS) in den VARTITLE (GESStabs)

Syntax:

LABELSTOTITLE <labelcode> = <varlist>;

Da es offensichtlich häufiger vorkommt, dass die interessanten Texte von dichotomen Variablen in sav-Files nicht im VARLABEL stecken, sondern in einem Labeltext, kann dieses Statement etwas Arbeit im Editor ersparen, z.B.:

LABELSTOTITLE 1 = dich1 TO dich20;
VARGROUP dich = ( dich1 TO dich20 ) EQ 1;

IgnoreSPSSMissingValues

Syntax:

IGNORESPSSMISSINGVALUES = [ YES | NO ];

Mit diesem Schalter kann man GESStabs anweisen, die MISSING VALUES in einem SPSS-Datensatz beim Einlesen mit SPSSINFILE zu ignorieren. Alle Variablenwerte aus dem sav.-File werden dann als gültig übertragen.

IgnoreSPSSSysMisVal

Syntax:

IGNORESPSSSYSMISVAL = [ YES | NO ];

Wenn eine Variable beim Einlesen eines SPSS-Datenfiles den Wert des internen SysmisVal von SPSS hat, dann wird dieser beim Einlesen durch den SETMISSING-Wert von GESS ersetzt. Das heißt, dass man diesen Wert innerhalb von GESStabs "nicht zu fassen" kriegt. Wenn man diesen numerischen Wert aber benötigt, kann man GESStabs mit IGNORESPSSSYSMISVAL = YES anweisen, den Test auf SPSS-SysmisVal auszulassen. Der Zahlenwert wird übertragen und ist dann gültig (nicht MISSING).

SPSSReadMult

Syntax:

SPSSREADMULT = [ YES | NO ];

In einzulesenden SPSS-Datensätzen können sogenannte MultResponse-Sets gespeichert sein. Diese bilden keine eigenen Variablen, sondern es sind Bildungsregeln, aus welchen (atomaren) Variablen ein solcher MultResponse-Set besteht. SPSS schreibt vor, dass die Namen dieser Sets mit $ beginnen. Setzt man SPSSREADMULT auf YES, dann wird GESStabs versuchen, diese MultResponse-Sets entweder als DICHOQ oder als MULTIQs zu restaurieren. Dabei entfernt GESStabs das führende $-Zeichen vom Namen.

Beachte: In seltenen Fällen kann dies zu Namenkollisionen mit anderen vom Benutzer gebildeteten Variablen führen.


Datenoutput

SPSSOutFile

Ausgabe der Daten in SPSS-Dateiformat.

Syntax:

SPSSOUTFILE = <filename>;

Speichert alle Variablen in ein SPSS-Datenfile (.sav). NOSPSS wird berücksichtigt, parallel zur Generierung von SPSS-Syntaxbeschreibungen. Bei den Variablentypen MULTIQ unnd DICHOQ werden die konstituierenden atomaren Variablen übertragen. Die Ausgabe von internen Filtervariablen wird unterdrückt. Gefilterte Variablen werden als MISSING VALUE (Systemmissing) an SPSS übergeben.

Ist ein VARTEXT vorhanden, wir dieser als VARLAB gespeichert; sonst (wenn vorhanden) der VARTITLE.

MISSING wird übertragen und alle Labels, außer denen mit Variablencodes zwischen 65001 und 65500 (interne synthetische Codes, reserviert für Gebrauch des Systems für AUTONOANSWER und OVERCODE).

StoreToSPSS

Syntax:

STORETOSPSS = <varlist>;

Option zur SPSSOUTFILE

Wenn hiermit eine Variablenliste für die Speicherung im SPSSOUTFILE angegeben wird, dann werden nur die angegebenen Variablen in der angegebenen Reihenfolge ins SAV-File exportiert.

NoSPSS

Siehe in Variableneigenschaften: Inhalt der benannten Variablen(-liste) wird bei YES nicht in SPSS-Outputfile übertragen.

SPSSWriteMult

Syntax:

SPSSWRITEMULT = [ YES | NO ];

Analog zu SPSSReadMult für SPSSINFILE

In SPSS-Datenfiles können sogenannte MultResponse-Sets gespeichert werden. Diese bilden keine eigenen Variablen, sondern es sind Bildungsregeln, aus welchen (atomaren) Variablen ein solcher MultResponse-Set besteht. SPSS schreibt vor, dass die Namen dieser Sets mit $ beginnen. Setzt man SPSSWRITEMULT auf YES, dann wird GESStabs versuchen, alle DICHOQ und MULTIQ als MultResponse-Set zu speichern. Dabei fügt GESStabs ein führendes $-Zeichen zum Namen hinzu.

SPSSWeightOut

Syntax:

SPSSWEIGHTOUT = <varname>;

Um mittels WEIGHTCELLS iterativ berechnete Gewichte in ein SPSS-Datenfile zu speichern, kann man mit SPSSWEIGHTOUT einen Variablennamen definieren, unter dem das berechnete Gewicht in dem SPSS-Datensatz abgelegt wird. Wenn keine Variable dieses Namens existiert, wird sie neu erzeugt.

Beachte: Der Inhalt dieser Variablen ist während des Laufs, mit dem sie generiert wird, bedeutungslos. Ihr Inhalt ist dann korrekt, wenn man das generierte Datenfile mit SPSSINFILE wieder benutzt.

SPSSNoRecodedLabels

Syntax:

SPSSNORECODEDLABELS = [ YES | NO ]:

In Codelisten sind ja die Labels, die mittels LABELRECODE umkodiert sind, in gewisser Weise obsolet. Mit dem Schalter SPSSNORECODEDLABELS=YES; kann man die Ausgabe in SPSS-Syntax und in das Variable-Dictionary des SPSS-Datensatzes unterbinden.

SPSSFilterMissing

Syntax:

SPSSFILTERMISSING = <number>;

Variablen, die in GESStabs gefiltert sind, also durch FILTER oder SETFILTER über eine Bedingung gefiltert sind, werden in den Fällen, wo dieser Filter greift, standardmäßig in SPSS auf den generellen Missingvalue (SETMISSING) abgebildet. Wenn man diese Fälle (trifft nicht zu) in SPSS von "echten" Missing-Werten unterscheiden will , kann man hierfür einen eigenen Code setzen. Dieser gilt dann global für alle Variablen.

TextToSPSSVarlab

Syntax:

TEXTTOSPSSVARLAB = [ YES | NO ];

TEXTTOSPSSVARLAB steuert, welcher Text der GESS-Variablen in das SAV-File oder in die SPSS-Syntax-Datei übertragen wird, wenn für eine Variable Vartitle und Vartext vorhanden sind. Ist nur eins von beidem vorhanden, wird der vorhandene Vartitle bzw. Vartext eingetragen. Sind beide vorhanden, findet der Schalter TEXTTOSPSSVARLAB Anwendung:

YES: Vartext wird übertragen
NO: Vartitle wird übertragen

Dieser Schalter ist global. Will man bei einer Variablen abweichend steuern, muss man dafür sorgen, dass nur einer der beiden Texte vorhanden ist, z.B. durch Einsatz eines leeren Vartitles (VARTITLE xx = "";).

SPSSAlphaLengh

Syntax:

SPSSALPHALENGTH = <number>;

Im Rahmen von GESStabs sind Alphavariablen von beliebiger Länge. Für die Speicherung in SPSS-Datenfiles muss intern eine maximale Länge angegeben werden. Diese kann man mit diesem Statement beeinflussen. Voreinstellung: SPSSALPHALENGTH = 20;

ChangeSPSSVarnames

Syntax:

CHANGESPSSVARNAMES = [ UPPERCASE | LOWERCASE | NO ];

Möglichkeit zur Modifikation der Variablennamen (Versalien oder Kleinbuchstaben) bei der Ausgabe in SPSS-Dateiformat (Datensatz und Syntax). Die Variablennamen innerhalb von GESStabs bleiben unverändert.

SPSSLongNames

Syntax:

SPSSLONGNAMES = [ YES | NO ];

Neuere SPSS-Versionen können - im Gegensatz zu älteren Versionen - lange Variablennamen verarbeiten und ausgeben, wenn dieser Schalter auf YES gesetzt wird.

SPSSPrintFormat

Syntax:

SPSSPRINTFORMAT = <spss-formatcode> <width> <decimals> ;

Die Darstellung von numerischen Variableninhalten wird bei der Übergabe der Variablen via SPSSIO<xx>.dll über drei integere Werte gesteuert: ein Formatcode, die Feldbreite und die Anzahl der Dezimalstellen.

Voreinstellung: SPSSPRINTFORMAT = 5 16 2 ;

Hier eine Liste der geläufigsten SPSS-Formatcodes (es gibt noch viele weitere):

SPSS_FMT_A                = 1;      {/* Alphanumeric*/}

SPSS_FMT_COMMA        = 3;      {/* F Format with commas*/}

SPSS_FMT_F                = 5;      {/* Default Numeric Format*/}

SPSS_FMT_P                = 8;      {/* Packed decimal*/}

SPSS_FMT_DOT        = 32;     {/* Like COMMA, switching dot for comma*/}

In der Form

SPSSPRINTFORMAT <varlist> = <num> <num> <num> ;

kann man einzelnen Variablen ein SPSSPRINTFORMAT geben, das vom Standardwert für alle Variablen abweicht, der entweder als default besteht oder global gesetzt wurde.

Ausgabe von Teil-Datensätzen

Daten aus Befragungen enthalten oft mehrfach formal identische Sequenzen von Variablen, z.B. für das erste, das zweite und das dritte Produkt. Natürlich kann man diese auch in dieser Form in GESStabs komfortabel auswerten. Für weitergehende Analysen ist es jedoch oft vorteilhaft, wenn man diese Abschnitte in einfacher Dateiform vorliegen hat. Also, platt gesprochen, statt 1000 Befragte mit 3000 Produkten einfach 3000 Datensätze über die Produkte. Für Analysen mit SPSS kann man diese Teil-Datensätze sehr einfach mit SPSSOUTSUBFILE und STORESPSSSUBFILE erzeugen.

Syntax:

SPSSOUTSUBFILE <internal_name> <varnamelist> = <spss_filename> ;
STORESPSSSUBFILE = <internal_name> ;

Über SPSSOUTSUBFILE-Statements können SPSS-Datenfles definiert werden, die beliebige Variablenmengen enthalten können.  Records dieser Subfiles werden immer dann geschrieben, wenn ein entsprechendes STORESPSSSUBFILE ausgeführt wird. Die Ausführung steuert man am besten mit IFBLOCK/ENDBLOCK. Der <internal_name> dient dazu, sich im Skript mittels des STORESPSSSUBFILE-Statements auf verschiedene aktive Subfiles zu beziehen. Die formalen Variablennamen in der <varnamelist> müssen bei der Formulierung des SPSSOUTSUBFILE noch nicht auf bestehende Variablen verweisen; sie geben nur an, wie die Variablen im SPSS-File heißen sollen. An der Stelle im Skript, an der STORESPSSSUBFILE aufgerufen wird, müssen hingegen alle Variablen der entsprechenden Namen definiert sein. Dies geschieht am einfachsten im selben IFBLOCK.

Zum Beispiel:

SPSSOUTSUBFILE subfile001 hh_nr pers_nr var01 var02 var03 = spss001.sav;

....

....

....

IFBLOCK 1 EQ a11 THEN

COMPUTE var01 = a11;

COMPUTE var02 = a12;

COMPUTE var03 = a13;

STORESPSSSUBFILE = subfile001;

ENDBLOCK;

 

IFBLOCK 1 EQ a15 THEN

COMPUTE var01 = a15;

COMPUTE var02 = a16;

COMPUTE var03 = a17;

STORESPSSSUBFILE = subfile001;

ENDBLOCK;

In die Datei spss01.sav werden je Fall 0, 1 oder 2 Records geschrieben, je nachdem ob die Variablen a11 und a15 den Code 1 enthalten oder nicht. Die Variablen im SPSS-File heißen hh_nr pers_nr var01 var02 und var03. var01 bis var03 werden aus unterschiedlichen Ursprungsvariablen gebildet.


Syntax-Output

SPSS

Syntax:

SPSS [ ASCIIOUT ] = <filename>;

Erzeugt ein SPSS-Command-File, das alle Variablen, die aus einer Dateninput-Datei gelesen werden, in Form von data list, variable labels und value labels beschreibt. Diese Anweisungen kann man anschließend direkt in SPSS verwenden, um die Daten aus dem Datafile in SPSS zu weiterzuverarbeiten. Bei optionaler Angabe von ASCIIOUT werden alle Variablen beschrieben, die in ein ASCIIOUTFILE geschrieben werden.

Wenn SPSSLONGNAMES nicht gesetzt ist, dann werden Variablennamen auf acht Zeichen gekürzt, dabei werden Leerzeichen und Punkte aus den Variablennamen entfernt, "$" werden durch "_" ersetzt. Werden Variablennamen durch diese Änderungen uneindeutig, werden diese durch die Namen "GESS_1" bis "GESS_999" ersetzt. Variablenlabel und Wertelabel werden auf 60 Zeichen verkürzt, die GESS-Sonderzeichen zur Trennung etc. werden entfernt.

Da SPSS keine Mehrfachnennungsvariablen kennt, werden die zugrunde liegenden Einzelvariablen an SPSS weitergegeben. Familyvars (MULTIQ) können mit dem SPSSGROUP-Statement in dichotome Variablen gewandelt werden.

Im Anschluss an die Ausgabe der Variablen in SPSS-Syntax werden die aus dem Input gelesenen Mehrfachnennungsvariablen (MULTIQ, DICHOQ) als MRSETS (SPSS-interne Struktur für Groups/MultiQ) angefügt.

SPSSGlobalSequence

Syntax:

SPSSGLOBALSEQUENCE = [ YES | NO ];

YES stellt das ursprüngliche Verhalten bei der Variablenablage in SPSS-Syntax-Dateien wieder her: Reihenfolge entspricht der Reihenfolge, in der die Variablen im GESStabs-Skript definiert wurden.

Die Option NO oder ein ausgelassenes SPSSGLOBALSEQUENCE-Statement speichert die Variablen in der physikalischen Reihenfolge der Daten (z.B. im ASCII-Datensatz) in der ausgegebenen SPSS-Syntaxdatei.


Weiteres

SPSSGroup

Erzeugen einer SPSS-spezifischen Gruppenvariable

SuppressSPSSWarnings

Gezieltes Deaktivieren von Warnmeldungen bei SPSSINFILE