SPSS -Makro zur Automatisierung sequentieller variabler Referenzen
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!
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.