Sas 在一个条件下从小组中进行第一次观察
假设我有一张桌子:Sas 在一个条件下从小组中进行第一次观察,sas,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 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
我尝试了排名,但这并没有让我产生任何想法因为数据集是经过排序的,您可以使用
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。这是根据评论编辑的 我误解了你的意思。编辑来了。