假设有以下内容:
data DB;
input ID :$20.Date :date9. Code :$20.;
format Date date9.;
cards;
0001 07JUL2014 PNE
0001 07JUL2014 CARD
0001 04MAY2016 ANEST
0002 19MAR2014 CARD
0002 22MAR2014 OCU
0003 27JUN2022 ALT
0004 18OCT2015 OCU
0004 18OCT2015 DER
0004 18OCT2015 PNE
0005 10AUG2019 PNE
;
有没有一种方法可以根据以下规则对数据库进行子集化,即所有“PNE”出现在同一天的ID与另一个代码(当然与PNE不同)以获得以下结果?
data DB1;
input ID :$20.Date :date9. Code :$20.;
format Date date9.;
cards;
0001 07JUL2014 PNE
0001 07JUL2014 CARD
0004 18OCT2015 OCU
0004 18OCT2015 DER
0004 18OCT2015 PNE
;
提前谢谢您
您可以像下面这样使用 SQL:
proc sql;
create table subset as
select
DB1.*
from
DB1
inner join
(select distinct
ID,
Date
from
DB1 as lhs
inner join
DB1 as rhs
on
lhs.ID eq rhs.ID
and
lhs.Date eq rhs.Date
where
lhs.Code eq "PNE"
and
rhs.Code ne "PNE"
) as subquery
on
DB1.ID eq subquery.ID
and
DB1.Date eq subquery.Date
order by
DB1.ID,
DB1.Date
;
quit;