How do you use SELECT-WHEN in SAS?

SELECT-WHEN is a SAS statement used to control the flow of execution of a program. It is used to conditionally execute certain instructions or statements only if the specified condition is true. It is often used in combination with the IF-THEN statement to evaluate multiple conditions in a program. It is useful in situations where you want to select a certain set of data values based on a certain condition.


You can use a SELECT-WHEN statement in SAS to assign values to a new variable based on the values of an existing categorical variable in a dataset.

This statement uses the following basic syntax:

data new_data;
set my_data;
select (Existing_Column);
   when ('value1')    New_Column=1;
   when ('value2')    New_Column=2;
   when ('value3')    New_Column=3;
   otherwise          New_Column=4;
end;
run;

This syntax produces a new column called New_Column whose values are dependent on the values in Existing_Column.

The following example shows how to use a SELECT-WHEN statement in practice.

Example: SELECT-WHEN in SAS

Suppose we have the following dataset in SAS that contains information about various basketball players:

/*create dataset*/
data my_data;
    input team $ rating $ points;
    datalines;
Mavs Great 22
Mavs Good 29
Mavs OK 15
Mavs Bad 8
Spurs Good 30
Spurs OK 15
Spurs OK 20
Spurs Bad 7
;
run;

/*view dataset*/
proc print data=my_data;

We can use the following SELECT-WHEN statement to create a new variable called Player_Status whose values depend on the value in the rating column:

/*create new dataset with Player_Status column*/
data new_data;
set my_data;
select (rating);
   when ('Great')    Player_Status=1;
   when ('Good')     Player_Status=2;
   when ('OK')       Player_Status=3;
   otherwise         Player_Status=4;
end;
run;

/*view new dataset*/
proc print data=new_data;

Here is how the values were generated in the new Player_Status column:

  • If rating was equal to “Great” then Player_Status was assigned 1.
  • If rating was equal to “Good” then Player_Status was assigned 2.
  • If rating was equal to “OK” then Player_Status was assigned 3.
  • If rating was not equal to any of the previously specified values then Player_Status was assigned 4.

Note: You can find the complete documentation for the SELECT statement in SAS .

The following tutorials explain how to perform other common tasks in SAS:

x