基于变量参考值和相同日期的子集

问题描述 投票:0回答:1

假设有以下内容:

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
;

提前谢谢您

sas
1个回答
0
投票

您可以像下面这样使用 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;
© www.soinside.com 2019 - 2024. All rights reserved.