假设我按如下方式对数据集进行排序:
proc sort data = temp;
by type descending score;
run;
我是否有一种优雅的方式可以为每种类型的每个分数添加一个计数器?我知道我可以使用第一个和最后一个语句,但是在我添加计数器的那种方式中是否有一种方法?
TYPE SCORE index
A 20 1
A 10 2
A 5 3
B 90 1
B 80 2
B 70 3
答案 0 :(得分:1)
不,在Proc Sort中没有这样的方法。您需要使用datastep或datastep视图来执行此操作。
proc sort data = temp;
by type descending score;
run;
data temp_v / view=temp_v;
set temp;
by type descending score;
if first.type then counter=0;
if first.score then counter+1;
run;
这有效地满足了您的要求 - 它增加了一个计数器而无需在数据中添加额外的传递。