Wie kann ich eine Schleife durch Variablen in SPSS? Ich möchte Code Doppelarbeit vermeiden

StackOverflow https://stackoverflow.com/questions/2884479

  •  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?

War es hilfreich?

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

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.)

Hier ist eine Seite von der UCLA Academic Technology Services, die über Listen beschreibt looping von Variablen . Zitat,

"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.

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