刚好前几天看了proc rank 的介绍,看能否回答你的问题。
它主要是用于分组后的“组内”排序。你举的例子x1应该是排序的变量,x2则是分组变量。
举个例子,某年级3个班(Banji 1、2、3)考试“马克思主义哲学”,成绩如下:
data zexue;
input Xuehao Banji Chengji @@;
cards;
12 2 80 45 3 65 33 1 97
04 3 77 23 3 85 52 2 69
22 1 95 39 1 89 75 2 89
;
proc sort;
by Banji descending Chengji ;
run;
上表用 proc sort 将 chengji 按照班级 (Banji )由高到低排序,但不能告诉每个学生在他班上的具体名次。
在上面数据集的基础上,我们用 proc rank 很轻松的将 chengji 按班级( Banji) 排名次:
proc rank descending data=zexue out=Banji_Paiming;
var Chengji;
ranks Mingci;
by Banji;
run;
这里,var Chengji 就是你的x1,指排序的变量,by Banji 是x2,指按班级分组。
几点说明:
1,此例我用的是proc rank
descending,不是proc rank,因为学生成绩以最高分排前面,所以用降序。其它很多情况(如比赛100冲刺,万米长跑等)以时间最短排前面,升序,用proc rank。
2,by Banji 也可移到 ranks 语句前面,结果一样。
3,ranks 语句也可省略不要,最后结果将
不显示 Chengji 内容(或者说,Chengji 内容 被新的排序取代了),其它不变。
proc rank descending data=zexue out=Banji_Paiming;
var Chengji ;
by Banji ;
run;