为每种数据类型选择前10个观察值(SAS)

时间:2016-11-24 11:51:39

标签: sorting sas

我正在尝试从大型数据集中为每个业务类别选择前10个风险。

以下是数据集的示例。

dataset example

如果我需要前十次曝光,那么我只需按曝光降序排序(如我所做)并使用(obs = 10)命令。

但是我要求每个LOB排名前10位。

你知道我怎么能在SAS做到这一点吗?

谢谢!

1 个答案:

答案 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;