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

2022-07-27  本文已影响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;

上一篇下一篇

猜你喜欢

热点阅读