Hey,
ich versuche im Moment, Variablennamen in Abhängigkeit vom Wert einer Variable zu erzeugen. In der betreffenden Datei gibt es dabei nur einen Fall. Leider mag SPSS anscheinend keine Programmvariablen vor dem =, also so etwas funktioniert nicht:
Compute !Concat('Test_',!varname) = 500.
Irgendwer eine Idee?
Viele Grüße,
Jens
SPSS Syntax - Variablenname mit Variablenwert erzeugen
-
Jens
- Beiträge: 3
- Registriert: 25.06.2009, 12:37
-
georggraph
- Beiträge: 114
- Registriert: 30.03.2009, 09:39
Hallo Jens,
um die Programmvariablen !CONCAT etc. beutzen zu können, musst Du mit einem Makro arbeiten.
Zum Beispiel:
Das Makro legt Dir eine Variable mit dem Namen Test_1 an, welche mit dem Wert 500 gefüllt wird.
Kann das Deine Frage beantworten, oder hattest Du noch etwas anderes im Sinn?
Grüße,
geoggraph
um die Programmvariablen !CONCAT etc. beutzen zu können, musst Du mit einem Makro arbeiten.
Zum Beispiel:
Code: Alles auswählen
* Makro definieren.
DEFINE !test (varname = !TOKENS(1)).
COMPUTE !CONCAT('Test_',!varname) = 500.
!ENDDEFINE.
* Makro aufrufen.
!test varname = 1.
EXE.Kann das Deine Frage beantworten, oder hattest Du noch etwas anderes im Sinn?
Grüße,
geoggraph
"Ein kaum merkliches Kopfnicken verriet dann, dass er nicht die Absicht habe, diese Frage zu beantworten, und es war Sache des Fragestellers, seinen eigenen Fehler zu erkennen und die Frage neu zu formulieren." (F.Kafka: Der Verschollene)
-
Jens
- Beiträge: 3
- Registriert: 25.06.2009, 12:37
Hallo,
erstmal Danke für Deine Antwort! Ja, also in einem Makro habe ich es, das Problem, was sich mir stellt, sieht allerdings so aus:
1. Es soll der Wert einer Datenvariablen eingelesen werden
2. Es soll eine neue Variable erzeugt werden, die den Wert der ersten Variable als Namensbestandteil hat.
Dabei muss ich wohl alles in eine neue Datei schreiben.
Also z.B. Variable Var32 hat im Fall 1 den Wert 310. in einer neuen Datei soll nun Var32_310 erzeugt werden und ebenfalls den Wert 310 erhalten. Danach soll das selbe für die 8 folgenden Variablen geschehen.
Viele Grüße,
Jens
erstmal Danke für Deine Antwort! Ja, also in einem Makro habe ich es, das Problem, was sich mir stellt, sieht allerdings so aus:
1. Es soll der Wert einer Datenvariablen eingelesen werden
2. Es soll eine neue Variable erzeugt werden, die den Wert der ersten Variable als Namensbestandteil hat.
Dabei muss ich wohl alles in eine neue Datei schreiben.
Also z.B. Variable Var32 hat im Fall 1 den Wert 310. in einer neuen Datei soll nun Var32_310 erzeugt werden und ebenfalls den Wert 310 erhalten. Danach soll das selbe für die 8 folgenden Variablen geschehen.
Viele Grüße,
Jens
-
georggraph
- Beiträge: 114
- Registriert: 30.03.2009, 09:39
Hallo,
okay, verstanden.
Als Anregung kannst Du mal folgende Testsyntax ausprobieren, die Du ggf. noch für Deine Zwecke etwas modifizieren müsstest:
Falls var32, wie Du schreibst, den Wert 310 hat, wird Dir durch diese Snytax eine neue Variable "Test_310" angelegt, die den Wert 310 hat.
Wichtig: Das Verzeichnis "C:\Temp" muss vorhanden sein - ansonsten musst Du einen Alternativpfad im Makro angeben.
Hoffe, das hilft Dir weiter.
Grüße,
georggraph
okay, verstanden.
Als Anregung kannst Du mal folgende Testsyntax ausprobieren, die Du ggf. noch für Deine Zwecke etwas modifizieren müsstest:
Code: Alles auswählen
DEFINE !test2 (varname = !TOKENS(1)).
WRITE OUTFILE = 'C:\Temp\Test.sps' /'DEFINE !testname () COMPUTE !CONCAT(Test_,'!varname') = '!varname' !ENDDEFINE.'.
EXE.
INCLUDE FILE = 'C:\Temp\Test.sps'.
!testname.
EXE.
!ENDDEFINE.
!test2 varname = var32.Wichtig: Das Verzeichnis "C:\Temp" muss vorhanden sein - ansonsten musst Du einen Alternativpfad im Makro angeben.
Hoffe, das hilft Dir weiter.
Grüße,
georggraph
"Ein kaum merkliches Kopfnicken verriet dann, dass er nicht die Absicht habe, diese Frage zu beantworten, und es war Sache des Fragestellers, seinen eigenen Fehler zu erkennen und die Frage neu zu formulieren." (F.Kafka: Der Verschollene)
-
Jens
- Beiträge: 3
- Registriert: 25.06.2009, 12:37
Hallo,
wollte mich nur mal kurz zurück melden, damit hier ne Lösung drin steht
Also dein Code sieht recht gut aus, allerdings hab' ich es dann doch mit einer langen langen IF-Abfrage gemacht, die einfach jeweile den Wert der einen Variable abfragt (es gab da nur 40 Ausprägungen) und dann alle anschließenden Variablen in entsprechende neue Variablen rein kopiert.
Vielen Dank auf jeden Fall!
Grüße,
Jens
wollte mich nur mal kurz zurück melden, damit hier ne Lösung drin steht
Vielen Dank auf jeden Fall!
Grüße,
Jens



