Hallo,
ich habe eine Frage zur Loop-Funktion.
Wir haben eine SPSS-Datei mit ca. 200 Fällen. Für jeden Fall soll eine Einzelauswertung stattfinden (bestimmte Variablenwerte und ein Diagramm) Die Variablenwerte kann ich ganz einfach mit dem Datei nach ID-Numemr aufteilen und dann dem List-Befehl anzeigen lassen. Die Grafiken kann ich über die Syntax auch erzeugen. Das Problem ist dabei, daß eine Liste von Tabellen erzeugt wird und eine Liste mit Diagrammen. Es soll aber immer der List-Ausdruck von einem Fall und danach das Diagramm erscheinen.
Was ich noch dazu sagen wollte, wir haben das Tables-Modul nicht.
Ich habe mir nun folgendes überlegt:
comp fallnum = $casenum. (Variable mit der Fallnumer erzeugen)
exec.
comp x=1. (Schleifenzählvariable x auf den Wert 1 setzen)
exec.
dann:
loop.
USE ALL.
COMPUTE filter_$=(fallnum=x).
VARIABLE LABEL filter_$ 'fallnum=x (FILTER)'.
VALUE LABELS filter_$ 0 'Nicht ausgewählt' 1 'Ausgewählt'.
FORMAT filter_$ (f1.0).
FILTER BY filter_$.
List ID v1 v2 v3.
[dann der Code für das Diagramm]
compute x=x+1.
End Loop if (x=200).
Mit dieser Schleife soll durch den Filter jede Variable einmal ausgewählt werden, und der List-Befehl und das Diagramm soll für jeden Fall 1 Mal ausgeführt werden. Es wird immer der Fall ausgewählt, bei dem die Zählvariable x gleich der vorher Definierten fallnum ist.
Danach wird der Wert der Zählvariablen x um 1 hochgesetzt und die Schleife sollte wieder von vorne durchlaufen werden, bis alle 200 Fälle bearbeitet worden sind, soweit die Theorie.
Es hat leider nich funktioniert, es erschien 2 Mal die Fehlermeldung 4095 (siehe unten, hab die Ausgabe reinkopiert). Wenn ich esrecht verstanden habe, kann ich inenrhalb einer Schleife weder den Execute- noch den List-befehl benutzen.
Kann mir jemand eine Lösung aufzeigen, die Funktioniert? Wo liegt mein Denkfehler?
Bin leider noch nicht so Fit mit der Syntax und in meiner Umgebung gibts niemand, der mir helfen könnte.
Auszug aus der Ausgabe:
comp fallnum = $casenum.
exec.
comp x=1.
exec.
Loop.
USE ALL.
COMPUTE filter_$=(fallnum=x).
VARIABLE LABEL filter_$ 'fallnum=x (FILTER)'.
VALUE LABELS filter_$ 0 'Nicht ausgewählt' 1 'Ausgewählt'.
FORMAT filter_$ (f1.0).
FILTER BY filter_$.
exec.
>Error # 4095. Command name: exec
>The transformations program contains an unclosed LOOP, DO IF, or complex
>file structure. Use the level-of-control shown to the left of the SPSS
>commands to determine the range of LOOPs and DO IFs.
>This command not executed.
list ID.
>Error # 4095. Command name: list
>The transformations program contains an unclosed LOOP, DO IF, or complex
>file structure. Use the level-of-control shown to the left of the SPSS
>commands to determine the range of LOOPs and DO IFs.
>This command not executed.
compute x=x+1.
End Loop if (x=200).
wäre echt nett, wenn mir jemand helfen könnte,
Marco
Schleife mit Syntax erstellen
-
- Beiträge: 2
- Registriert: 20.09.2006, 21:53
Hi,
exe innerhalb der loop-Schleife geht nicht. Wäre aber auch nicht das Problem. Es ginge nämlich auch einfach:
loop #i=1 to 200.
do if fallnum=#i.
List v1 v2 v3.
end if.
End Loop.
exe.
Das Problem ist aber dummerweise, dass er kein list innerhalb der Schleife machen kann.
Der einfachste Weg ist:
temp.
sel if fallnum=1.
list ID v1 to v3
temp.
sel if fallnum=1.
..mache Diagramm..
Und das ganze in dann 200x kopieren und die Fallnummern ersetzen. (oder in Excel ziehen, dort geschickt anordnen und durch runterziehen Excel hochzählen lassen und wieder zurückkopieren).
Gruss
bertil
exe innerhalb der loop-Schleife geht nicht. Wäre aber auch nicht das Problem. Es ginge nämlich auch einfach:
loop #i=1 to 200.
do if fallnum=#i.
List v1 v2 v3.
end if.
End Loop.
exe.
Das Problem ist aber dummerweise, dass er kein list innerhalb der Schleife machen kann.
Der einfachste Weg ist:
temp.
sel if fallnum=1.
list ID v1 to v3
temp.
sel if fallnum=1.
..mache Diagramm..
Und das ganze in dann 200x kopieren und die Fallnummern ersetzen. (oder in Excel ziehen, dort geschickt anordnen und durch runterziehen Excel hochzählen lassen und wieder zurückkopieren).
Gruss
bertil