在一个条件下从小组的第一次观察

时间:2017-02-12 14:21:32

标签: sas

假设我有表:

    id  date        N

    1   04FEB2017   1
    1   04FEB2017   .
    1   04FEB2017   2
    1   04FEB2017   .
    1   05FEB2017   3
    2   04FEB2017   4
    2   04FEB2017   5

按ID分类,然后按日期排序。

对于所有相同的id,对于所有相同的date,如果N不是null我想保持只有第一排。结果是:

 id  date        N

1   04FEB2017   1
1   04FEB2017   .
1   04FEB2017   .
1   05FEB2017   3
2   04FEB2017   4

我尝试排名,但这并没有让我想到任何想法

1 个答案:

答案 0 :(得分:0)

由于数据集已排序,您可以使用BY语句和FIRST.语法查找每个组中的第一条记录。

data have;
informat id 4. date date9. n 4.;
format date date9.;
input id date n;
datalines;
1 04FEB2017 1 
1 04FEB2017 . 
1 04FEB2017 2 
1 04FEB2017 . 
1 05FEB2017 3 
2 04FEB2017 4 
2 04FEB2017 5 
;
run;

data want;
set have;
by id date;

if first.date or missing(n) ;
run;

第二个数据步骤仅保留第一个日期或缺少n。这是根据评论编辑的。