2016-11-24 4 views
1

Я пытаюсь выбрать 10 лучших экспонатов для каждого класса бизнеса из большого набора данных.Выбор 10 лучших наблюдений для каждого типа данных (SAS)

Ниже приведен пример набора данных.

dataset example

Если бы я был нужен топ-10 экспозиций, то я бы просто сортировать по убыванию воздействия (как я сделал) и использовать команду (набл = 10).

Тем не менее, для каждой большой площади требуются 10 лучших.

Вы знаете, как я могу это сделать в SAS?

Спасибо!

ответ

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;