SAS数据合并存在

时间:2015-03-26 08:05:30

标签: sas

我是sas的新手,我有两个数据集如下,

data datasetA;
    input a $1;
    datalines;
1
2
3
4
5
6
7
;
run;

data datasetB;
    input a $1;
    datalines;
1
3
5
7
;
run;

如果出现B,那么我想要的输出应该是

1 Y
2 N
3 Y
4 N
5 Y
6 N
7 Y

2 个答案:

答案 0 :(得分:4)

data _a;
format a 3.;
do i = 1 to 7;
a = i;
output;
end;
drop i;

data _b;
format b 3.;
do i = 1 to 7 by 2;
b = i;
output;
end;
drop i;
run;

data _c;
merge _a(in=_a) _b(in=_b rename=(b=a));
format St $2.;
if _a and _b then St = 'Y';
else St = 'N';
by a;
run;

我建议你谷歌SAS mergeSAS proc sql join来介绍基本概念。

答案 1 :(得分:4)

这可以通过至少两种方式实现:

  • merge通过data step
  • left joinproc sql

此pdf比较pros and cons of merge versus sql in sas

由于rbet向您展示了如何使用合并步骤执行此操作,因此我将向您展示如何使用proc sql执行此操作。

proc sql;
  create table work.result as
    select t1.a, case when t2.a is not missing then 'Y' else 'N' end as exists
    from work.datasetA t1
     left join work.datasetB t2 on t1.a = t2.a order by t1.a;