Frage

Ich hatte es schwer, eine einfache Schleife für die Arbeit in SPSS zu bekommen, die nicht auf Variablen basiert.

Kurz gesagt, ich möchte schreiben

!sequentialVars varStr=/Var/ i=/20/.

oder ähnlich und erhalten Sie: var1 var2 var3 var4 var5 ... var19 var20, um in einen ctable oder irgendwo anders zu versetzen, das eine Zeichenfolge von Variablennamen aufweist.

In Pseudo VB wäre es:

varString = "AnyVarName"
for i=1 to 20
  newVarList = concatenate(newVarList," ",varString, i)
next i

Ich kann das I in einer SPSS -Schleife nicht einmal zurücksetzen, geschweige denn, es zu verkettet.

Vielen Dank!

War es hilfreich?

Lösung

Das folgende Beispiel zeigt eine Liste von Variablen innerhalb eines Makros. Was es tut, ist, 1 bis n zu durchlaufen und die Zahl am Ende der aktuellen Variablen zu verkettet (base_i). Dann ist die X1 + X2 .... wird hergestellt, indem nur für jede Variable durch die Schleife hinzugefügt wird. Das Makro nimmt die Argumente Basisvariable und die Anzahl der Elemente an.

*making filler data frame.
data list free / V1 (F1.0).
begin data
1
3
5
end data.
dataset name input.

*making a vector list.
vector X(5,F1.0).
do repeat X = X1 to X5.
compute X = RV.BERNOULLI(0.5).
end repeat.

*what I want to do essentially.
ctables
/table X1 + X2.

*now to demonstrate looping through list.
DEFINE !loop_ctable (base = !TOKENS(1)
                     /n = !TOKENS(1))

!DO !I = 1 !TO !n
    !IF (!I = 1) !then
        !LET !base_stub = !concat(!base,"1")
    !ELSE
        !LET !base_i = !CONCAT(!base,!I)
        !LET !base_stub = !concat(!base_stub," + ",!base_i)
    !IFEND
!DOEND

ctables
/table !base_stub.

!ENDDEFINE.

set mprint on.

!loop_ctable base = X n = 5.

Ich kann mir einen Weg vorstellen, durch Buchstaben zu schalten (zumindest durch die Anfangsbuchstaben des Alphabets), obwohl dies hoffentlich ausreicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top