You can use PROC RANK in SAS to calculate the rank for one or more numeric variables.
Here are the four most common ways to use this procedure:
Method 1: Rank One Variable
proc rank data=original_data out=ranked_data;
var var1;
ranks var1_rank;
run;
Method 2: Rank One Variable by Group
proc rank data=original_data out=ranked_data;
var var1;
by var2;
ranks var1_rank;
run;
Method 3: Rank One Variable into Percentiles
proc rank data=original_data groups=4 out=ranked_data;
var var1;
ranks var1_rank;
run;
Method 4: Rank Multiple Variables
proc rank data=original_data out=ranked_data;
var var1 var2;
ranks var1_rank var2_rank;
run;
The following examples show how to use each method with the following dataset in SAS:
/*create dataset*/
data original_data;
input team $ points rebounds;
datalines;
A 25 10
A 18 4
A 18 7
A 24 8
B 27 9
B 33 13
B 31 11
B 30 16
;
run;
/*view dataset*/
proc print data=original_data;
Example 1: Rank One Variable
The following code shows how to create a new variable called points_rank that ranks the points scored by each team:
/*rank points scored by team*/
proc rank data=original_data out=ranked_data;
var points;
ranks points_rank;
run;
/*view ranks*/
proc print data=ranked_data;
The team with the most points receives the highest rank and the team with the lowest points receives the lowest rank.
Any ties in points scored are assigned a mean rank. For example, the rows with the first and second lowest points scored both receive a rank of 1.5, since this is the average of 1 and 2.
Note that you can instead use the descending statement to assign the team with the most points the lowest rank:
/*rank points scored by team in descending order*/
proc rank data=original_data descending out=ranked_data;
var points;
ranks points_rank;
run;
/*view ranks*/
proc print data=ranked_data;
Example 2: Rank One Variable by Group
The following code shows how to create a new variable called points_rank that ranks the points scored, grouped by team:
/*rank points scored, grouped by team*/
proc rank data=original_data out=ranked_data;
var points;
by team;
ranks points_rank;
run;
/*view ranks*/
proc print data=ranked_data;
Example 3: Rank One Variable into Percentiles
We can use the groups statement to rank variables into percentile groups. For example, we can rank each value of points into a quartile (four groups):
/*rank points into quartiles*/
proc rank data=original_data groups=4 out=ranked_data;
var points;
ranks points_rank;
run;
/*view ranks*/
proc print data=ranked_data;
The rows with the points values in the lowest quartile are assigned a group of 0, the rows with the points in the next lowest quartile are assigned a group of 1, and so on.
Note: To assign values into deciles instead, simply use groups=10.
Example 4: Rank Multiple Variables
The following code shows how to create multiple new variables to rank both points and rebounds:
proc rank data=original_data out=ranked_data;
var points rebounds;
ranks points_rank rebounds_rank;
run;
Additional Resources
The following tutorials explain how to perform other common tasks in SAS:
How to Use Proc Summary in SAS
How to Use Proc Tabulate in SAS
How to Use PROC Transpose in SAS
How to Create Frequency Tables in SAS