Come posso ciclo attraverso le variabili in SPSS? Voglio evitare la duplicazione del codice
-
04-10-2019 - |
Domanda
C'è uno SPSS modo "nativo" per scorrere alcuni nomi delle variabili? Tutto quello che voglio fare è prendere un elenco di variabili (che io definisco) ed eseguire la stessa procedura per loro:
pseudo-codice - non è davvero un buon esempio, ma ottiene il punto attraverso ...
for i in varlist['a','b','c']
do
FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end
ho notato che la gente sembra di utilizzare solo i plugin R o Python SPSS per ottenere questa funzionalità di base array, ma non so quanto tempo posso ottenere quelli configurati (se mai) sulla mia installazione di SPSS.
SPSS deve avere qualche modo nativo per fare questo ... giusto?
Soluzione
Ci sono due semplici soluzioni per il collegamento in cascata variabili (più facile rispetto all'utilizzo di Python in SPSS).
1) DO REPEAT-END REPEAT
La parte posteriore pareggio è che è possibile utilizzare DO REPEAT-END REPEAT
principalmente solo per le trasformazioni dei dati - ad esempio COMPUTE
, RECODE
ecc Le frequenze non sono ammessi. Ad esempio:
DO REPEAT R=REGION1 TO REGION5.
COMPUTE R=0.
END REPEAT.
2) DEFINE-!ENDDEFINE
(macro impianto)
Si può fare Frequenze in un ciclo di variabili utilizzando il comando macro. Ad esempio:
DEFINE macdef (!POS !CHAREND('/'))
!DO !i !IN (!1)
frequencies variables = !i.
!DOEND
!ENDDEFINE.
macdef VAR1 VAR2 VAR3 /.
Altri suggerimenti
Se ho capito bene la questione, ci può essere alcuna necessità di utilizzare un costrutto loop. comandi SPSS con un sottocomando VARIABLES come le frequenze consentono di specificare più variabili.
La sintassi di base per le frequenze è:
FREQUENCIES
VARIABLES= varlist [varlist...]
dove [lista-variabili] è un singolo nome di variabile, più i nomi delle variabili spazio delimitato, una serie di variabili consecutive specificate con la parola chiave TO, la parola chiave ALL, o una combinazione delle opzioni precedenti.
Ad esempio:
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
Vedere SPSS Statistics 17.0 Command Syntax Reference disponibili all'indirizzo http://support.spss.com/ProductsExt/SPSS/Documentation/SPSSforWindows/index.htm
Si noti che sono passati anni da quando ho effettivamente utilizzato SPSS.
E 'più efficace per fare tutte queste frequenze sui dati One Pass, per esempio,
FREQUENCIES a to c.
ma Python permette di fare loop e un sacco di altri trucchi flusso di controllo.
begin program.
import spss
for v in ['a','b','c']:
spss.Submit("FREQUENCIES " + v)
end program.
Usare Python richiede l'installazione del (libero) Python Plugin disponibili da SPSS Developer Central, www.spss.com/devcentral .
È possibile, ovviamente, utilizzare macro per questo genere di cose, ma Python è molto più potente e più facile una volta a ottenere il blocco di esso.
Sì, SPSS può fare questo. Suoni come i ragazzi di UCLA uso pitone perche' sanno come farlo in Python e non in SPSS. :)
chiamata Let le variabili VARA, varB, Varc. Essi devono essere numerica (dal momento che si sta facendo le frequenze) e devono essere consecutivi nel file di dati SPSS. Quindi si crea un vettore dicendo a tutti gli effetti "qui è la serie di variabili che voglio loop through".
VECTOR VectorVar = VarA TO VarC.
LOOP #cnt = 1 to 3 by 1.
FREQUENCIES VARIABLES=VectorVar(#cnt) / ORDER=ANALYSIS
ENDLOOP.
EXECUTE.
(È possibile che questo non è stato testato. Potrebbe mancare un qualche periodo, ecc)
"Perché stiamo scorrendo più di una variabile, avremo bisogno di usare Python ".
Nella mia esperienza, UCLA ATS è probabilmente il sito con la migliore copertura di tutti dei principali sistemi informatici statistici. Se dicono hai bisogno di Python ... probabilmente avete bisogno di Python.
Ehm ... scusate per essere quel tipo, ma forse è il momento di passare a un sistema di statistiche diverso.
Non ho usato le macro SPSS molto, ma forse si può ottenere in cui è necessario essere? Dai un'occhiata a questo sito per alcuni esempi:
http://spsstools.net/Macros.htm
Inoltre, il libro SPSS Data Management può essere utile pure.
Infine, se la memoria non serve, penso che il problema potrebbe anche essere il principale esempio di come sfruttare Python all'interno della sintassi SPSS. Ho usato solo Python e SPSS un paio di volte, ma è molto comodo avere che un linguaggio accessibile in caso di necessità.
HTH
Come si può fare questo Stata sintxis per 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
Grazie.