IF is a conditional
COMPUTE command. It calculates a (possibly new) variable but only for those cases that satisfy some condition(s). This tutorial walks you through some typical examples of the
Example 1 - Replace Missing Values
With the syntax below we'll first create some test data. Next we'll set the existing variable
100 for all respondents (only one in this case) having a missing value on
score. An alternative here is RECODE
score (missing = 100). The effect becomes visible after sorting the cases in a more conventient way.This is because
IF is technically a transformation.
SPSS IF Syntax Example 1
data list free/gender score.
0 80 1 85 0 90 1 95 0 '' 1 105 0 110 1 115
*2. Replace missing value with 100.
if missing(score) score = 100.
*3. Sort cases.
sort cases gender.
Example 2 - Score Groups
Next, we'll create score groups. Respondents scoring under 100 points get a
1 (‘low score’). The others get a
2 (‘high score’). We'll demonstrate three ways to do so. The third may seem a little weird. It's explained in Compute A = B = C.
SPSS IF Syntax Example 2
if score lt 100 group_a = 1.
if score ge 100 group_a = 2.
*2. Create score groups option 2.
recode score (100 thru hi = 2) (else = 1) into group_b.
*3. Create score groups option 3.
compute group_c = (score ge 100) + 1.
Example 3 - Gender-Score Groups
Now we'll create score groups for female and male respondents separately. At this point we can't use a simple
RECODE anymore. This is because the conditions now involve two variables,
score. A simple approach here is using four
IF statements. Each holds two conditions (gender and score). A faster but more difficult equivalent here is a single
SPSS IF Syntax Example 3
if score lt 100 and gender eq 0 group_d = 1.
if score ge 100 and gender eq 0 group_d = 2.
if score lt 100 and gender eq 1 group_d = 3.
if score ge 100 and gender eq 1 group_d = 4.
*2. Gender-score groups option 2.
compute group_e = 2 * gender + (score ge 100) + 1.
Difference Between IF and DO IF
Very similar to the
IF commands we showed is
DO IF-ELSE IF-END IF. Apart from the latter usually requiring more syntax, there's an important difference between the two. This occurs when conditions are not mutually exclusive. This means that a single case may satisfy two or more conditions simultaneously. In this case, the following happens
IFthe last condition that holds prevails. Since
IFstatements are completely separate commands, later ones simply overwrite the results of previous ones.
DO IF-ELSE IF-END IFthe first condition that holds prevails. The trick is in
ELSE IF. The “ELSE” here means “if the preceding condition(s) don't hold, only then...”
The final syntax example demonstrates this difference between
DO IF-ELSE IF-END IF.
SPSS IF Syntax Example 4
compute group_f = 1.
do if score ge 100.
compute group_f = 3.
else if score ge 90.
compute group_f = 2.
*2. Sort cases.
sort cases score.
*3. Equivalent IF statements don't work.
compute group_g = 1.
if score ge 100 group_g = 3.
if score ge 90 group_g = 2.