查找不在SAS另一个数据集中的值

时间:2018-10-09 01:07:18

标签: sas

在SAS中:我有2个数据集,并且如果我想找出仅一个变量的值,而该值在另一个简单的数据集中则不存在。

现在,如果我必须通过以下方式进行比较:

data dataset1;
input PointA $ PointB $ @6 date date7.;
format date mmddyy10.;
datalines;
NY LV 02Oct2018
NY LV 04Oct2018
NY LV 06Oct2018
;

给出Dataset1:

Obs    PointA   PointB  Date
1      NY       LV      10/02/2002
2      NY       LV      10/04/2002
3      NY       LV      10/06/2002

Dataset2的日期为2018年10月1日至2018年10月6日。

DATE
01Oct2018
02Oct2018
03Oct2018
04Oct2018
05Oct2018
06Oct2018

通缉:我想要的最终输出是与Dataset2相比,PointA-PointB缺少Dataset1中的所有值(日期)。所以我想要的输出是:

Obs   PointA   PointB   Date
1      NY       LV      10/01/2002
2      NY       LV      10/03/2002
3      NY       LV      10/05/2002

我正在使用NOT IN,但是它只给我日期。我需要以某种方式包括其他变量;在这种情况下,就是PointA,PointB。

1 个答案:

答案 0 :(得分:0)

使用涉及不相等(ON)比较的ne条标准执行完整的笛卡尔联接。使用EXCEPT set-operator

从笛卡尔中删除原始的“ have”行。
* use the proper informat! ;
data have;
input PointA $ PointB $ date date9.; format date mmddyy10.; datalines;
NY LV 02Oct2018
NY LV 04Oct2018
NY LV 06Oct2018
;

data dates; input
date date9.; format date mmddyy10.; datalines;
01Oct2018
02Oct2018
03Oct2018
04Oct2018
05Oct2018
06Oct2018
;

proc sql;
  create table have_not_lookup as
  select distinct 
    have.PointA, have.PointB, lookup.date
  from 
    have
  join 
    dates lookup 
  on 
    lookup.date NE have.date
  except
    select * from have
  ;