Makroprogrammierung SPSS

Alles rund um SPSS Syntax und Programmierung.

Makroprogrammierung SPSS

Beitragvon _Melli_ » Fr 28. Okt 2016, 15:28

Liebe SPSS-Community,

ich möchte für SPSS eine Routine zum Einlesen und Labeln einer CSV-Datei erstellen, die in Abhängigkeit von zwei Fällen unterscheidet:
Es gibt zwei Datenversionen der CSV-Datei. Diese unterscheiden sich lediglich im Dateinamen (Version1: data_g.csv und Version: data_s.csv) sowie in einer Variablen (Version1: EF1 und Version2: EF2).

Der Nutzer sollte in der Makrovariablen zu Beginn anpassen, welche Version er nutzt
(z.B. DEFINE !version () 'g' !ENDDEFINE.) Und er sollte dann einfach aus dem "g" ein "s" machen oder es so lassen.

Im Anschluss soll dich Routine durchlaufen werden mit dem Befehl um die CSV-Datei einzulesen, Variablenlabels zu vergeben, Wertelabels vergeben

GET DATA
/TYPE=TXT
/FILE=!Pfad+"data_"+!version+".csv"
/DELCASE=LINE
/DELIMITERS=";"
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE=ALL
/VARIABLES=
EF1 F2.0
EF2 F2.0
EF3 F5.0
...
CACHE.
EXECUTE.

VARIABLE LABELS EF1 "BLABLA1".
VARIABLE LABELS EF2 "BLABLA2".
VARIABLE LABELS EF3 "BLABLA3".

VALUE LABELS EF1
1 "BLABLA1".
VALUE LABELS EF2
1 "BLABLA2".
VALUE LABELS EF3
1 "BLABLA3".

SAVE OUTFILE=!Pfad+!dateiOUT.
EXECUTE.

Wie schaffe ich es jetzt Makrobedingungen zu setzen, dass SPSS in Abhängigkeit von der genutzten Version den korrekten Variablennamen einliest, das korrekte Variablenlabel vergibt usw.?
Wenn ich keine Bedingungen setze, bekomme ich eine Fehlermeldung, da die Variable nicht gefunden wird.

In Stata und in SAS habe ich dies bereits sehr einfach mit Makrovariablen gelöst:
Stata:
if ${version} >= g {
label variable EF1 "Blabla1"
}

oder in SAS innerhalb eines Makros:
%if &version = g %then %do;
label EF1 = "Blabla1";
%end;

Leider finde ich die SPSS-Makroprogrammierung nicht so intuitiv und ich habe schon lange gegrübelt und gedacht, es müsste doch auch so eine einfache Lösung geben. Von daher würde ich mich sehr freuen, wenn jemand eine Idee hätte, wie das Problem gelöst werden könnte.

Vielen Dank schonmal für Euer Feedback,
Melli
_Melli_
 
Beiträge: 1
Registriert: Fr 28. Okt 2016, 15:00
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Zurück zu SPSS Syntax

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste