美文网首页
SAS-在sas中如何实现两个数据集的相减?

SAS-在sas中如何实现两个数据集的相减?

作者: 睿睿爱汪汪也爱喵喵 | 来源:发表于2022-07-27 23:14 被阅读0次

    目标:在一个数据集b中,我们已经根据特定条件筛选出了子数据集c,继而,还想分析b中除了c以外的样本;即我们如何筛选两个集合的差集?

    做法:我们可以采取如下几种办法:

    /*方法1:用data步的merge函数生成差集a_1*/

    data a_1;

     merge b c(in=in1);

     by SAMPLEID;

     if not in1;

     run;

    /*方法2:sql挑选差集a_2*/

     proc sql;

     create a_2 as 

     select * from b

    except

     select * from c;

     quit;

    /*方法3:sql挑选差集a_3*/

     proc sql;

    create table a_3 as 

    select * from b where ID not in (select ID from c);

    quit;

    方法2和方法3不一样之处在于:方法2筛选的是两个数据集完全不一样的样本;方法3筛选的是特定列不一样的样本。

    /*方法4:sql语言的写法(使用左连接)*/

    proc sql noprint;

    create table a_4 as

    select k.*

    from b as k

    left join 

    b as s

    on k.id=s.id

    where missing(s.id);

    quit;

    /*方法5:用主键的方法*/

    data c(INDEX=id));set c;run;

    data a_5;

    set b;set c;key = id;

    if _Error_ = 1 then do;output;end;

    run;

    相关文章

      网友评论

          本文标题:SAS-在sas中如何实现两个数据集的相减?

          本文链接:https://www.haomeiwen.com/subject/zdsxwrtx.html