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

目标:在一个数据集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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容