In SPSS, 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 IF command.

## Example 1 - Replace Missing Values

With the syntax below we'll first create some test data. Next we'll set the existing variable score to 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

***1. Create test data.**

data list free/gender score.

begin data

0 80 1 85 0 90 1 95 0 '' 1 105 0 110 1 115

end data.

***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

***1. Create score groups option 1.**

if score lt 100 group_a = 1.

if score ge 100 group_a = 2.

exe.

***2. Create score groups option 2.**

recode score (100 thru hi = 2) (else = 1) into group_b.

exe.

***3. Create score groups option 3.**

compute group_c = (score ge 100) + 1.

exe.

## 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, gender and 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 COMPUTE command.

## SPSS IF Syntax Example 3

***1. Gender-score groups option 1.**

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.

exe.

***2. Gender-score groups option 2.**

compute group_e = 2 * gender + (score ge 100) + 1.

exe.

## 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

- With IF the
**last condition that holds prevails**. Since IF statements are completely separate commands, later ones simply overwrite the results of previous ones. - With DO IF-ELSE IF-END IF the
**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 IF and DO IF-ELSE IF-END IF.

## SPSS IF Syntax Example 4

***1. Three score groups with DO-IF.**

compute group_f = 1.

do if score ge 100.

compute group_f = 3.

else if score ge 90.

compute group_f = 2.

end if.

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

exe.

## This tutorial has 37 comments

## By Simmy on April 28th, 2017

It worked - thank you Ruben - really appreciate it!!

Have a lovely weekend :)

## By Ruben Geert van den Berg on April 28th, 2017

Hi Simmy!

Try replacing

IF x=1 COMPUTE TOT = SUM(y) .

with

IF (x=1) TOT = tot + y.

Hope that helps!

## By Simmy on April 27th, 2017

Hi Ruben - thanks for your quick reply. I am not very advanced with SPSS syntax - I tried the below but it doesn't seem to work... can you see where I am going wrong? Thank you!!!

COMPUTE TOT= 0 .

DO REPEAT x = A1 A2 A3 A4 A5 / y = B1 B2 B3 B4 B5 .

IF x=1 COMPUTE TOT = SUM(y) .

END REPEAT PRINT .

EXECUTE .

## By Ruben Geert van den Berg on April 26th, 2017

Hi Simmy!

You could first calculate the sum as 0 for all cases. Then use DO REPEAT: you'll loop over both variable lists in parallel. If Ax = 1, add Bx to the sum.

Does that make any sense?

## By Simmy on April 26th, 2017

Hi Ruben, I was wondering if you can use nested IF functions to calculate a variable? A simplified example would be with the following variables

A1 A2 A3 A4 A5

B1 B2 B3 B4 B5

I want to calculate a sum of B variables but only if the corresponding A value is 1 so for one case A1 and A4 are 1 so I want to add B1 and B4 for another case A2 and A5 are 1 so I want to add B2 and B5 - please let me know if that makes sense and if you think it might be possible- thank you!