Come posso ciclo attraverso le variabili in SPSS? Voglio evitare la duplicazione del codice

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

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

È stato utile?

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)

Ecco una pagina da Academic Technology Services di UCLA che descrive il ciclo sulle liste di variabili . Quote,

  

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top