SPSS Syntax - Variablenname mit Variablenwert erzeugen

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
Jens
Beiträge: 3
Registriert: 25.06.2009, 12:37

SPSS Syntax - Variablenname mit Variablenwert erzeugen

Beitrag von Jens »

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
georggraph
Beiträge: 114
Registriert: 30.03.2009, 09:39

Beitrag von georggraph »

Hallo Jens,

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.
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
"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

Beitrag von Jens »

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
georggraph
Beiträge: 114
Registriert: 30.03.2009, 09:39

Beitrag von georggraph »

Hallo,

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.
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
"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

Beitrag von Jens »

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
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten