Sas 排名前3位的指标和整个ros的排名
我想做的是:我想知道一个观察结果(a)是否是其他观察结果中的前三名 比如说,Sas 排名前3位的指标和整个ros的排名,sas,row,transpose,Sas,Row,Transpose,我想做的是:我想知道一个观察结果(a)是否是其他观察结果中的前三名 比如说, A B C D E F G H TOP3-A 1 20 30 40 50 60 70 80 90 N 2 80 90 70 80 0 0 0 0 Y 3 70 0 0 80 90 0 0 0
A B C D E F G H TOP3-A
1 20 30 40 50 60 70 80 90 N
2 80 90 70 80 0 0 0 0 Y
3 70 0 0 80 90 0 0 0 Y
4 60 70 80 90 0 0 0 0 N
我认为transpose+rank+transpose+if你的方法可行,但是有一种更简单的方法 可以使用跨行读取的数组,但是我使用了更简单的跨行读取方法 语句的
可与摘要函数结合使用,以计算跨行而非向下的值。maximum
函数返回一个范围中最大的第n个值,因此您可以将字段a与行中的第三个最大值进行比较
我已经给出了产生Y,N的答案,再加上一个产生1,0的替代方案,这更简单
data have;
input A B C D E F G H;
datalines;
20 30 40 50 60 70 80 90
80 90 70 80 0 0 0 0
70 0 0 80 90 0 0 0
60 70 80 90 0 0 0 0
;
run;
data want;
set have;
if A >= largest(3, of A--H) then top3_A = 'Y'; /* A--H references all columns between A and H */
else top3_A = 'N';
/* or */
top3_A2 = (A >= largest(3, of A--H)); /* returns 1 for true, 0 for flase */
run;