2014-05-09 416 views
0

我有名爲idkey的列。我按id排序數據,我需要得到每個id的前5個鍵。sas按照編號排序和篩選

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宏! – mjsqu

回答

3

PROC SQL語句OUTOBS=選項適用於查詢作爲一個整體,所以你的榜樣,你將只能得到五個行返回。

以下代碼應用計數器i,每次遇到新的id值時都會重置。如果i值等於或小於5(即第一個五年每個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;