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 36 comments

## By Laura on December 4th, 2016

I have 4 sub-scores. I want to calculate an overall mean score. I want to omit scores of zero on any of the subscores because if I dont, then the average is divided by 4 when only 3 scores went into the average.

how do I do this?

## By Ruben Geert van den Berg on November 1st, 2016

Hi Diasylyn! No, I don't think there's an official limit. However, I do think you can -and should- shorten your syntax an awful lot because there's a ton of repetitions in it. This also makes the whole thing unmanageable. Perhaps try something like

if (Gestational_Age_DMC EQ 28 ...)...

if (Gestational_Age_DMC EQ 29 ...)...

else if (sex = 1).

if (Gestational_Age_DMC EQ 28 ...)...

if (Gestational_Age_DMC EQ 29 ...)...

end if./*SEX SELECTOR.

end if./*UNIVERSAL EXCLUSIONS.

Also see DO IF. Hope that helps!

## By Daisylyn Chin on November 1st, 2016

Is there a limit to how many operands, operators allowed in a "if" statement?

## By Daisylyn Chin on November 1st, 2016

This is giving me an error.

IF ((Gestational_Age_DMC EQ 28 AND sex EQ 0 AND Head_Circumference_DMC GE 22.77 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 32.1 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.73 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 29 AND sex EQ 0 AND Head_Circumference_DMC GE 23.66 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 33.37 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.83 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 30 AND sex EQ 0 AND Head_Circumference_DMC GE 24.55 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 34.64 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.93 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 31 AND sex EQ 0 AND Head_Circumference_DMC GE 25.43 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 35.91 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.05 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 32 AND sex EQ 0 AND Head_Circumference_DMC GE 26.32 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 37.18 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.18 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 33 AND sex EQ 0 AND Head_Circumference_DMC GE 28.07 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 39.39 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.13 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 34 AND sex EQ 0 AND Head_Circumference_DMC GE 28.76 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 40.76 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.4 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 35 AND sex EQ 0 AND Head_Circumference_DMC GE 29.39 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 41.99 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.65 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 36 AND sex EQ 0 AND Head_Circumference_DMC GE 29.99 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 43.1 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.88 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 37 AND sex EQ 0 AND Head_Circumference_DMC GE 30.54 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 44.09 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.08 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 38 AND sex EQ 0 AND Head_Circumference_DMC GE 31.05 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 44.98 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.27 AND Weight_KG_DMC LT 9999 ) OR

(Gestational_Age_DMC EQ 39 AND sex EQ 0 AND Head_Circumference_DMC GE 31.54 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 45.79 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.43 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 40 AND sex EQ 0 AND Head_Circumference_DMC GE 32.00 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 46.52 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.58 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 41 AND sex EQ 0 AND Head_Circumference_DMC GE 32.44 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 47.19 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.71 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 42 AND sex EQ 0 AND Head_Circumference_DMC GE 32.85 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 47.8 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.83 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 28 AND sex EQ 1 AND Head_Circumference_DMC GE 22.52 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 31.6 7AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.69 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 29 AND sex EQ 1 AND Head_Circumference_DMC GE 23.41 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 32.94 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.78 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 30 AND sex EQ 1 AND Head_Circumference_DMC GE 24.30 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 34.21 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.88 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 31 AND sex EQ 1 AND Head_Circumference_DMC GE 25.18 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 35.48 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 0.99 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 32 AND sex EQ 1 AND Head_Circumference_DMC GE 26.07 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 36.75 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.12 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 33 AND sex EQ 1 AND Head_Circumference_DMC GE 27.75 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 39.53 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.15 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 34 AND sex EQ 1 AND Head_Circumference_DMC GE 28.47 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 40.79 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.42 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 35 AND sex EQ 1 AND Head_Circumference_DMC GE 29.12 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 41.9 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.66 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 36 AND sex EQ 1 AND Head_Circumference_DMC GE 29.71 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 42.89 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 1.87 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 37 AND sex EQ 1 AND Head_Circumference_DMC GE 30.24 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 43.77 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.06 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 38 AND sex EQ 1 AND Head_Circumference_DMC GE 30.73 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 44.56 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.23 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 39 AND sex EQ 1 AND Head_Circumference_DMC GE 31.17 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 45.27 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.38 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 40 AND sex EQ 1 AND Head_Circumference_DMC GE 31.57 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 45.9 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.5 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 41 AND sex EQ 1 AND Head_Circumference_DMC GE 31.94 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 46.47 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.61 AND Weight_KG_DMC LT 9999) OR

(Gestational_Age_DMC EQ 42 AND sex EQ 1 AND Head_Circumference_DMC GE 32.28 AND Head_Circumference_DMC LT 9999 AND Length_cm_DMC GE 45 AND Length_cm_DMC LT 9999 AND Weight_KG_DMC GE 2.24 AND Weight_KG_DMC LT 9999)

) Microcephaly_Status_HC_LG_WG_DMC EQ 0.

EXECUTE.

## By Ruben Geert van den Berg on August 24th, 2016

Hi Nicholas! Thanks for the compliment! My website's backend is managed with some scripts I developed over the years. I'd recommend doing so only if you're either very driven or -more likely- very crazy ;-)