Comment peut-boucle I à des variables dans SPSS? Je veux éviter la duplication de code

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

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

Était-ce utile?

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

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

Voici une page de la technologie académique des services de l'UCLA qui décrit en boucle sur les listes des variables . Citation,

  

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top