Search code examples
statisticsloopsspss

How can I loop through variables in SPSS? I want to avoid code duplication


Is there a "native" SPSS way to loop through some variable names? All I want to do is take a list of variables (that I define) and run the same procedure for them:

pseudo-code - not really a good example, but gets the point across...

for i in varlist['a','b','c']
do
  FREQUENCIES VARIABLES=varlist[i] / ORDER=ANALYSIS.
end

I've noticed that people seem to just use R or Python SPSS plugins to achieve this basic array functionality, but I don't know how soon I can get those configured (if ever) on my installation of SPSS.

SPSS has to have some native way to do this...right?


Solution

  • There are two easy solutions for looping through variables (easier compared to using Python in SPSS).

    1) DO REPEAT-END REPEAT

    The draw back is that you can use DO REPEAT-END REPEAT mainly only for data transformations - for example COMPUTE, RECODE etc. Frequencies are not allowed. For example:

    DO REPEAT R=REGION1 TO REGION5.
    COMPUTE R=0.
    END REPEAT.
    

    2) DEFINE-!ENDDEFINE (macro facility)

    You can do Frequencies in a loop of variables using macro command. For example:

    DEFINE macdef (!POS !CHAREND('/'))
    !DO !i !IN (!1)
    frequencies variables = !i.
    !DOEND
    !ENDDEFINE.
    
    macdef VAR1 VAR2 VAR3  /.