В sas сравните, выведите только различия и новые записи - PullRequest
0 голосов
/ 20 ноября 2018

В сравнении с id, как я могу вывести только разницу и новые записи, но не старые записи, которых больше нет?

Пример, предположим, у меня есть две таблицы:

mybase:

    key other
    1   Ann
    3   Ann
    4   Charlie
    5   Emily

и mycompare:

    key other
    2   Bill
    3   Charlie
    4   Charlie

выполняется:

    proc compare data=mybase
        compare=mycompare
        outnoequal
        outdif
        out=myoutput
        listvar
        outcomp
        outbase
        method = absolute 
        criterion = 0.0001  
    ;
    id key;
    run;

Я получаю таблицу "myoutput", подобную этой:

    type    obs key other
    base    1   1   Ann
    compare 1   2   Bill
    base    2   3   Ann
    compare 2   3   Charlie
    dif     2   3   XXXXXXX
    base    4   5   Emily

Я хотел бы иметь это:

    type    obs key other
    compare 1   2   Bill
    base    2   3   Ann
    compare 2   3   Charlie
    dif     2   3   XXXXXXX

1 Ответ

0 голосов
/ 20 ноября 2018

Это работает для вашего примера.Я думаю, что вы хотите выводить записи, которые не совпадают в базе, и любые записи, которые совпадают и имеют различия.

data mybase;
   input key other $;
   cards;
    1   Ann
    3   Ann
    4   Charlie
    5   Emily
;;;;
data mycompare;
   input key other $;
   cards;
    2   Bill
    3   Charlie
    4   Charlie
;;;;

proc compare data=mybase
     compare=mycompare
     outnoequal
     outdif
     out=myoutput
     listvar
     outcomp
     outbase
     method = absolute 
     criterion = 0.0001  
 ;
 id key;
 run;
proc print;
   run;
data test;
   set myoutput;
   by key;
   if (first.key and last.key) and _type_ eq 'BASE' then delete;
   run;
proc print;
   run;


Obs    _TYPE_     _OBS_    key    other

 1     COMPARE      1       2     Bill
 2     BASE         2       3     Ann
 3     COMPARE      2       3     Charlie
 4     DIF          1       3     XXXXXXX.
...