Wie kann ich eine Schleife durch Variablen in SPSS? Ich möchte Code Doppelarbeit vermeiden
-
04-10-2019 - |
Frage
Gibt es eine „native“ SPSS Art und Weise durch einige Variablennamen Schleife? Alles, was ich tun möchte, ist eine Liste von Variablen nehmen (die ich definieren) und die gleiche Prozedur für sie ausführen:
Pseudo-Code - nicht wirklich ein gutes Beispiel, aber erhält den Punkt herüber ...
for i in varlist['a','b','c']
do
FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end
Ich habe bemerkt, dass die Menschen scheinen nur R oder Python SPSS-Plugins verwenden diese grundlegende Array-Funktionalität zu erreichen, aber ich weiß nicht, wie schnell kann ich die (wenn überhaupt) auf meiner Installation von SPSS konfiguriert bekommen.
SPSS hat einige native Möglichkeit haben, diese ... Recht zu tun?
Lösung
Es gibt zwei einfache Lösungen für die durch Variablen Looping (einfachen Vergleich zur Verwendung von Python in SPSS).
1) DO REPEAT-END REPEAT
Der Nachteil ist, dass Sie DO REPEAT-END REPEAT
hauptsächlich nur für Datentransformationen verwenden können - zum Beispiel COMPUTE
, RECODE
usw. Die Frequenzen sind nicht erlaubt. Zum Beispiel:
DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.
2) DEFINE-!ENDDEFINE
(Makrofunktion)
Sie können in einer Schleife von Variablen Frequenzen tun Makro-Befehl. Zum Beispiel:
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.
macdef VAR1 VAR2 VAR3 /.
Andere Tipps
Wenn ich die Frage richtig verstanden hat, kann es keine Notwendigkeit, ein Schleifenkonstrukt zu verwenden. SPSS-Befehle mit einem Unterbefehl VARIABLES wie FREQUENCIES können Sie mehrere Variablen angeben.
Die grundlegende Syntax für die Frequenzen ist:
FREQUENCIES
VARIABLES= varlist [varlist...]
wobei [varlist] ist eine einzelne Variable Name, mehrere durch Leerzeichen getrennte Variablennamen, eine Reihe von aufeinander folgenden Variablen mit dem TO-Schlüsselwort angegeben, das Schlüsselwort ALL, oder eine Kombination der vorherigen Optionen.
Zum Beispiel:
FREQUENCIES VARIABLES=VARA
FREQUENCIES VARIABLES=VARA VARB VARC
FREQUENCIES VARIABLES=VARA TO VARC
FREQ VAR=ALL
FREQ VAR=VARA TO VARC VARM VARX TO VARZ
Siehe SPSS Statistics 17.0 Command Syntax Reference verfügbar unter
Es ist effizienter all diese Frequenzen auf einer Daten zu tun passieren, zum Beispiel,
Mit Python erfordert die (freie) Python-Plugin verfügbar von SPSS Developer Central installieren, www.spss.com/devcentral . Sie können natürlich die Verwendung von Makros für diese Art von Dingen, aber Python ist viel leistungsfähiger und einfacher, sobald Sie den Dreh raus zu bekommen. FREQUENCIES a to c.
aber Python können Sie Looping und viele andere Steuerfluss Tricks. begin program.
import spss
for v in ['a','b','c']:
spss.Submit("FREQUENCIES " + v)
end program.
Ja, SPSS kann dies tun. Sounds wie die Jungs an der UCLA python- weil sie wissen, wie es in Python zu tun und nicht in SPSS. :)
Nennen wir Ihre Variablen VARA, VARB, VARC. Sie müssen numerisch sein (da Sie Frequenzen tun), und sie müssen in Ihrer spss Datendatei in Folge sein. Dann erstellen Sie einen Vektor in der Tat sagen: „Hier ist die Reihe von Variablen I Schleife will durch“.
VECTOR VectorVar = VarA TO VarC.
LOOP #cnt = 1 to 3 by 1.
FREQUENCIES VARIABLES=VectorVar(#cnt) / ORDER=ANALYSIS
ENDLOOP.
EXECUTE.
(Die oben nicht getestet. Könnte eine Zeit irgendwo fehlt, etc.)
"Weil wir durch mehr sind Looping als eine Variable, müssen wir verwenden Python. "
Nach meiner Erfahrung UCLA ATS ist wahrscheinlich der Ort mit der besten Abdeckung aller die wichtigsten statistischen Rechensysteme. Wenn sie sagen, Sie Python benötigen ... müssen Sie wahrscheinlich Python.
Er ... sorry für diesen Kerl zu sein, aber vielleicht ist es an der Zeit zu wechseln zu einem anderen Statistik-System.
Ich habe SPSS-Makros nicht sehr viel verwendet, aber vielleicht können sie Sie, wo Sie sein müssen? Schauen Sie sich diese Seite für einige Beispiele:
http://spsstools.net/Macros.htm
Auch das SPSS Data Management Buch auch hilfreich sein kann.
Schließlich, wenn der Speicher dient, ich denke, das Problem sogar das wichtigste Beispiel, wie man Hebelwirkung Python innerhalb von SPSS Syntax sein kann. Ich habe nur Python und SPSS ein paar Mal verwendet, aber es ist sehr praktisch, diese Sprache zu haben, zugänglich, wenn es sein muss.
HTH
Wie kann diese Stata tun sintxis für spss.
foreach var of varlist pob_multi pob_multimod pob_multiex vul_car vul_ing nopob_nov espacio carencias carencias_3 ic_rezedu ic_asalud ic_ss ic_cv ic_sbv ic_ali pobex pob {
tabstat `var' [w=factor] if pob_multi!=., stats(mean) save
matrix define `var'_pp =(r(StatTotal))
matrix rownames `var'_pp = `var'_pp
}
matrix tabla1 = (pob_multi_pp \ pob_multimod_pp \ pob_multiex_pp \ vul_car_pp \ vul_ing_pp \ nopob_nov_pp \ espacio_pp \ carencias_pp \ carencias_3_pp \ espacio_pp \ ic_rezedu_pp\ ic_asalud_pp \ ic_ss_pp \ ic_cv_pp \ ic_sbv_pp\ ic_ali_pp \ espacio_pp \ pobex_pp \ pob_pp )
matrix list tabla1
Dank.