SAS EG:不包括数据集

时间:2018-05-29 13:22:27

标签: csv import sas s

我试图排除显示在名为 - clmspull并注册的表中的个人列表。关键在于排除糖尿病患者,因为我们正在寻找那些已经患有糖尿病的人筛查

我将列表保存为名为" diabexc"的永久数据集。我知道我在某处合并,例如:

data excdiab; /*new data set that will exclude the diabetics*/ merge diabexc (IN=a) clmspull (IN=b) enroll (IN=c); by edipn; run;

我不确定这是否正确,我觉得我在正确的轨道上......我们只是希望这些人从数据中删除。

这是今天要的,所以我很疯狂。非常感谢您提供的任何帮助!谢谢。

2 个答案:

答案 0 :(得分:1)

通过在合并语句之后使用if = a和b = 0以及c = 0来获得类似下面的内容。您也可以使用if而不是(b或c)代替。这意味着来自第一个数据集的记录不在第二个或第三个数据集中。

data diabexc;
  input edipn ;
 datalines;
 1
 2
 3
 4
 ;
 data clmspull;
 input edipn ;
 datalines;
 3
 5
 ;

data enroll;
input edipn ;
datalines;
2
6
;

data excdiab; /*new data set that will exclude the diabetics*/
 merge diabexc (IN=a) clmspull (IN=b) enroll (IN=c); 
 by edipn; 
if a = 1 and b = 0 and c = 0;
run;

答案 1 :(得分:0)

您可以在proc sql中使用子查询:

proc sql ;
  create table excdiab as
  select *
  from diabexc
  where epidn ^in(select epidn from clmspull)
    and epidn ^in(select epidn from enroll)
  ;
quit ;