# SPSS Statistics

View Only

## Some examples of using DO REPEAT in SPSS

#### By Archive User posted Wed January 28, 2015 11:41 AM

For the majority of data management I do in SPSS, the brunt of the work is likely done in under 10 different commands. DO REPEAT is one of those commands, and I figured I would show some examples of its use.

In its simplest form, `DO REPEAT` simply iterates over a list of variables and can apply computations to those variables. So say in a survey you had a skip pattern, and the variables A, B, C should not be answered if someone has a value of 1 for Skip, but your current dataset just has missing data as system missing. We can use `DO REPEAT` to iterate over the variables and assign the missing value code.
``DO REPEAT v = A B C.  IF Skip = 1 v = 9.END REPEAT.``

Note this is not a great example, as you could simply use a `DO IF Skip = 1.` and nest a `RECODE` in that do if, but hopefully that is a clear example to start. One of the other tricks to `DO REPEAT` is that you can specify a counter variable to iterate over at the same time. So say you had a variable X that took integer values of 1 to 4. If you want to make dummy codes for say a regression equation, using such a counter makes short work of the process. (The `VECTOR` command creates the 4 original dummy variables.)
``VECTOR X(4,F1.0).DO REPEAT Xn = X1 TO X4 /#i = 1 TO 4.  COMPUTE Xn = (X = #i).END REPEAT.``

A final trick I often find use for is to make a list of strings instead of a list of variables. For instance, say I had a list of addresses and I wanted to specifically pull out people on Main, 1st, or Central. You could do:
``COMPUTE Flag = 0.IF CHAR.INDEX(Street,"Main") > 0 Flag = 1.IF CHAR.INDEX(Street,"1st") > 0 Flag = 2.IF CHAR.INDEX(Street,"Central") > 0 Flag = 3.``

But it is much easier to just submit your own list of strings to `DO REPEAT`:
``COMPUTE Flag = 0.DO REPEAT str = "Main" "1st" "Central" /#i = 1 TO 3.  IF CHAR.INDEX(Street,str) > 0 Flag = #i.END REPEAT.``

You can similarly submit arbitrary lists of numeric values as well. With much longer lists you can see how much more expedited this code is. Anytime I find myself writing a series of very similar `COMPUTE` or `IF` statements, or chaining many variables together in one statement, I often rewrite the code to use `DO REPEAT`.

#data-manipulation
#SPSS
#SPSSStatistics