我是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;如果A出现在B,那么我想要的输出应该是
1 Y
2 N
3 Y
4 N
5 Y
6 N
7 Y发布于 2015-03-26 08:45:24
至少可以通过两种方式实现这一目标:
merge通过data step或left join和proc sql。这个pdf比较sas中合并与sql的优缺点。
由于rbet向您展示了如何使用merge步骤完成此操作,因此我将向您展示如何使用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;发布于 2015-03-26 08:38:00
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介绍基本概念。
https://stackoverflow.com/questions/29273568
复制相似问题