我是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
答案 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 merge
或SAS proc sql join
来介绍基本概念。
答案 1 :(得分:4)
这可以通过至少两种方式实现:
merge
通过data step
或left join
与proc 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;