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