我正在尝试从大型数据集中为每个业务类别选择前10个风险。
以下是数据集的示例。
如果我需要前十次曝光,那么我只需按曝光降序排序(如我所做)并使用(obs = 10)命令。
但是我要求每个LOB排名前10位。
你知道我怎么能在SAS做到这一点吗?
谢谢!
答案 0 :(得分:1)
我会创建一个计数虚拟变量,计算每行业务的曝光次数,然后删除虚拟变量超过10的任何观察值。
这可以在单个datastep中完成(假设数据已正确排序),(ab-)使用SAS代码从上到下运行。
proc sort data = have out=temp; by lob descending exposure; run;
data want(drop=countlob);
retain countlob;
set temp;
by lob;
countlob = countlob + 1;
if first.lob then countlob = 1;
if countlob > 10 then delete;
run;