Поиск значений не в другом наборе данных в SAS - PullRequest
0 голосов
/ 09 октября 2018

В 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 имеет даты с 01Oct2018 по 06Oct2018.

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

WANTED: конечный результат, который я хочу, это какие значения все(даты) в наборе данных1 отсутствуют для PointA-PointB по сравнению с набором данных2.Итак, мой желаемый вывод:

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 голосов
/ 09 октября 2018

Выполните полное декартово объединение с ON критериями, включающими не равное (ne) сравнение.Удалите оригинальные строки 'have' из декартовой системы с помощью оператора EXCEPT set

* 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
  ;
...