你可以使用SAS中的PROC RANK 来计算一个或多个数字变量的等级。
下面是使用这个程序的四种最常见的方法。
方法1:对一个变量进行排名
proc rank data=original_data out=ranked_data;
var var1;
ranks var1_rank;
run;
方法2:按组排列一个变量
proc rank data=original_data out=ranked_data;
var var1;
by var2;
ranks var1_rank;
run;
方法3:将一个变量排成百分位数
proc rank data=original_data groups=4 out=ranked_data;
var var1;
ranks var1_rank;
run;
方法4:对多个变量进行排名
proc rank data=original_data out=ranked_data;
var var1 var2;
ranks var1_rank var2_rank;
run;
下面的例子说明了如何在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;

例1:对一个变量进行排名
下面的代码显示了如何创建一个名为point_rank的新变量,对每支球队的得分进行排名。
/*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;

得分最多的球队获得最高排名,得分最少的球队获得最低排名。
任何得分相同的球队都被赋予一个平均排名。例如,得分第一和第二低的行都得到1.5的排名,因为这是1和2的平均值。
请注意,你可以使用降序语句来给得分最多的球队分配最低的排名:
/*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;

例2:按组排列一个变量
下面的代码显示了如何创建一个名为points_rank的新变量,对得分进行排名,按球队分组。
/*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;

例3:将一个变量按百分位数排名
我们可以使用group语句将变量排成百分位数组。例如,我们可以将每个积分值排入一个四分位数(四个组)。
/*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;

积分值处于最低四分位数的行被分配到0组,积分处于次低四分位数的行被分配到1组,以此类推。
注意:如果要将数值分配到十位数,只需使用group=10。
例四:多变量排名
下面的代码显示了如何创建多个新的变量来对积分和篮板进行排名。
proc rank data=original_data out=ranked_data;
var points rebounds;
ranks points_rank rebounds_rank;
run;

其他资源
下面的教程解释了如何在SAS中执行其他常见的任务:
如何在SAS中使用Proc Summary
如何在SAS中使用Proc Tabulate
如何在SAS中使用PROC Transpose
如何在SAS中创建频率表