Comment peut-boucle I à des variables dans SPSS? Je veux éviter la duplication de code
-
04-10-2019 - |
Question
Y at-il un moyen de boucle de SPSS « natif » par certains noms de variables? Tout ce que je veux faire est de prendre une liste de variables (que je définis) et exécuter pour eux la même procédure:
pseudo-code - pas vraiment un bon exemple, mais obtient le point à travers ...
for i in varlist['a','b','c']
do
FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end
J'ai remarqué que les gens semblent simplement utiliser des plugins R ou Python SPSS pour obtenir cette fonctionnalité de tableau de base, mais je ne sais pas combien de temps je peux obtenir ceux configurés (si jamais) sur mon installation de SPSS.
SPSS doit avoir une certaine façon native de le faire ... droit?
La solution
Il existe deux solutions faciles pour une boucle à travers les variables (plus facile par rapport à l'utilisation de Python dans SPSS).
1) DO REPEAT-END REPEAT
Le dos de tirage au sort est que vous pouvez utiliser DO REPEAT-END REPEAT
principalement que pour les transformations de données - par exemple COMPUTE
, RECODE
etc. Fréquences ne sont pas autorisés. Par exemple:
DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.
2) DEFINE-!ENDDEFINE
(installation macro)
Vous pouvez faire Fréquences dans une boucle de variables en utilisant la commande macro. Par exemple:
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.
macdef VAR1 VAR2 VAR3 /.
Autres conseils
Si je comprends bien la question, il peut y avoir pas besoin d'utiliser une construction en boucle. commandes SPSS avec un sous-commande VARIABLES comme FRÉQUENCES vous permettent de spécifier plusieurs variables.
La syntaxe de base pour les FRÉQUENCES est:
FREQUENCIES
VARIABLES= varlist [varlist...]
où [varlist] est un nom variable, les noms de variables délimités par des espaces multiples, une gamme de variables consécutives spécifiées avec le mot-clé TO, le mot-clé ALL, ou une combinaison des options précédentes.
Par exemple:
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
Voir SPSS Statistics 17.0 Command Syntax Reference à l'adresse
Il est plus efficace de faire toutes ces fréquences sur un passage de données, par exemple,
En utilisant Python nécessite l'installation du (gratuit) plug-in Python disponible à partir de SPSS Developer Central, www.spss.com/devcentral . Vous pouvez, bien sûr, utiliser des macros pour ce genre de choses, mais Python est beaucoup plus puissant et plus facile une fois que vous obtenez le coup de lui. FREQUENCIES a to c.
mais Python vous permet de faire une boucle et beaucoup d'autres tours de contrôle de flux. begin program.
import spss
for v in ['a','b','c']:
spss.Submit("FREQUENCIES " + v)
end program.
Oui, SPSS peut le faire. Sons comme les gars de python utilisation UCLA parce qu'ils savent comment le faire en python et non dans SPSS. :)
L'appel Let vos variables VARA, VARB, Varc. Ils doivent être numériques (puisque vous faites des fréquences) et ils doivent être consécutifs dans votre fichier de données spss. Ensuite, vous créez un vecteur dit en effet « ici est la série de variables que je veux faire une boucle à travers ».
VECTOR VectorVar = VarA TO VarC.
LOOP #cnt = 1 to 3 by 1.
FREQUENCIES VARIABLES=VectorVar(#cnt) / ORDER=ANALYSIS
ENDLOOP.
EXECUTE.
(ci-dessus a pas été testé. Pourrait manquer une période de quelque part, etc.)
"Parce que nous sommes Boucler dans plus d'une variable, nous devrons utiliser Python. "
Dans mon expérience, UCLA ATS est probablement le site avec la meilleure couverture de tous des grands systèmes informatiques statistiques. S'ils disent que vous avez besoin Python ... vous avez probablement besoin Python.
Euh ... désolé d'être ce gars-là, mais peut-être qu'il est temps de passer à un système de statistiques différentes.
Je n'ai pas utilisé des macros SPSS beaucoup, mais ils peuvent peut-être vous rendre là où vous devez être? Consultez ce site pour quelques exemples:
http://spsstools.net/Macros.htm
En outre, le livre de gestion des données SPSS peut être utile aussi bien.
Enfin, si ma mémoire est bonne, je pense que le problème peut même être l'exemple principal de comment tirer parti de Python dans la syntaxe SPSS. Je ne l'ai utilisé quelques fois Python et SPSS, mais il est très pratique d'avoir cette langue accessible en cas de besoin.
HTH
Comment faire pour Stata sintxis 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
merci.