sas按ID排序和过滤

时间:2014-05-09 12:05:57

标签: sas

我的列名为idkey。我按id对数据进行了排序,我需要获取每个id的前5个键。

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;

1 个答案:

答案 0 :(得分:3)

OUTOBS=语句中的PROC SQL选项适用于整个查询,因此在您的示例中,只返回五行。

以下代码应用计数器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;