2014-05-09 2 views
0

У меня есть столбцы с именем id и key. Я отсортировал данные по id, и мне нужно получить первые 5 ключей каждого id.сортировка и фильтрация sas по id

PROC SQL OUTOBS=5; 
    CREATE TABLE WORK.QUERY_001 AS 
    SELECT DISTINCT t1.*  
     FROM work.DATA t1 
     ORDER BY t1.id, 
       t1.key DESC; 
QUIT; 
+0

Кроме того, я забыл упомянуть, что это не имеет ничего общего с SAS Macro! – mjsqu

ответ

3

OUTOBS= вариант на вашем PROC SQL заявления относится к запросу в целом, так и с вашим примером вы получите только пяти строк вернулись.

В следующем коде применяется счетчик i, который сбрасывается каждый раз, когда встречается новое значение id. Если значение i пять или меньше (то есть первые пять строк для каждого id), то строка записывается в новый набор данных:

 
proc sort data=data; 
    by id descending key; 
run; 

data query_001 (drop=i); 
    set data; 
    by id descending key; 
    if first.id then i=0; 
    i+1; 
    if i <=5; 
run; 
Смежные вопросы