在sas比较中,仅输出差异和新记录

时间:2018-11-20 15:59:08

标签: sas

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 :(得分:1)

这适用于您的示例。我想您要输出基数不匹配的记录以及任何匹配但有差异的记录。

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.