Hilfe mit Makro (Loops)

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
shijin83
Beiträge: 1
Registriert: 18.07.2012, 13:42

Hilfe mit Makro (Loops)

Beitrag von shijin83 »

Hallo Zusammen

Ich bin am verzweifeln: Ich müsste 350 Variablen manuell generieren und habe mich deshalb daran versucht, ein Makro in die SPSS Syntax einzubetten, damit das Ganze automatisch berechnet wird. Leider bekomme ich das nicht hin, vielleicht kann mir jemand hier helfen?

Ausgangslage:

Ich habe drei Variablen:
AggloNr ist eine Variable mit Werten für Kategorien von 1 bis 50.
St_Typ ist eine Variable mit Werten für Kategorien von 1 bis 3.
meters ist eine Variable mit Werten für zurückgelegte Distanzen in Metern.

Ich möchte jetzt für jede Kombination aus den ersten beiden Kategorien eine eigene Variable generieren. Da es 50 Kategorien bei Variable 1 gibt und 3 bei der zweiten, würde dies 350 neue Variablen generieren.

Das Problem:

Manuell würde ich das vermutlich wie folgt berechnen:

Code: Alles auswählen

DATASET ACTIVATE segmente_agglo.
IF (Agglo00_No = 121 & st_typ = 1) a01_01=METERS. 
IF (Agglo00_No = 230 & st_typ = 1) a02_01=METERS. 
.
.
.
usw.
Da ich den Aufwand minimieren und mich etwas tiefer in die Materie einarbeiten möchte, habe ich nun versucht ein Makro schreiben das mir diese Arbeit abnimmt und automatisch diese 350 Variablen generiert.

Nach langer Testerei bin ich zu folgendem Ergebnis gekommen:

Makro-Code:

Code: Alles auswählen

DEFINE PW_Agglo_ST_Typ (AggloNr = !TOKENS(1) /  St_Typ = !TOKENS(1) / meters = !TOKENS(1))
!DO !I !IN (!AggloNr).
!DO !J !IN (!St_Typ).
!LET !varname=!CONCAT('a',!I,'_',!J).
!IF (!AggloNr=!I & !St_Typ=!J) !THEN !LET !varname=!meters.
!IFEND.
!DOEND.
!DOEND.
!ENDDEFINE.
Makro Call:

Code: Alles auswählen

DATASET ACTIVATE segmente_agglo.
PW_Agglo_ST_Typ AggloNr = Agglooo_No St_Typ = st_typ meters = METERS.
Die zu Grunde liegende Überlegung war, dass es zwei Schlaufen braucht damit für jeden Strassentyp (St_Typ, inneres Loop) einmal der äussere Loop (AggloNr) durchlaufen wird. Insgesamte sollte ja so 50mal der innere Lopp dreimal ausgeführt werden.

Das Makro gibt so keinen Fehler aus, aber es geschieht auch absolut nichts. Deshalb bin ich völlig ratlos, ob ich einen Logik- / Denkfehler gemacht habe, oder aber ein technischer Fehler vorliegt.

Für Anregungen, Denkanstösse und Hilfe wäre ich überaus dankbar!

Vielen Dank und freundliche Grüsse

Jonas Bley
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

http://spssx-discussion.1045642.n5.nabble.com/

und sich an David Marso wenden.

Der hat seine Freude dran.

(PS: execute. schon probiert?)
drfg2008
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