我想比较两个数据集并将匹配的观察结果提取到一个新数据集。例如,
我有两个数据集,一个来自十月,另一个来自十一月,如下所示。
数据集10月
visitor_id ctn visits
kjsjakd83 3243244234 1
sakdsadda 5432223442 2
jhk43242l 3243243244 1
iiiewdaja 9839422022 2
数据集11月
visitor_id ctn visits
kjsjakd83 3243244234 1
432hj4hj 3243243244 2
jhk43242l 3243243244 1
xfd3x424 2342344234 2
现在,我想通过CTN比较这些数据集,并提取10月数据集中的所有观察结果,其中11月数据集中找到了匹配的CTN。因此,提取的数据集必须如下所示。
数据集匹配
visitor_id ctn visits
kjsjakd83 3243244234 1
jhk43242l 3243243244 1
我如何在SAS中执行此操作?
答案 0 :(得分:1)
如果您只想要来自OCTOBER的CTN值在NOVEMBER中的记录,那么这似乎是最直接的SQL语法。
select * from OCTOBER
where CTN in (select CTN from NOVEMBER)
;
答案 1 :(得分:0)
如果你使oct“a”和nov“b”你的代码工作正常。另外,正如Keith所提到的,你的nov数据集中有重复的ctn值,你应该修复或解释你想要如何处理;最好加入a.visitor_id = b.visitor_id和a.ctn = b.ctn。
proc sql;
create table final as select distinct
a.* from oct as a inner join nov as b
on a.ctn = b.ctn;
quit;
答案 2 :(得分:0)
@汤姆的回答是我是怎么做的,但是如果没有PROC SQL
,这是怎么做的:
proc sort data=october;
by ctn;
run;
proc sort data=november;
by ctn;
run;
data match;
merge october (IN=oct)
november (IN=nov keep=ctn);
by ctn;
if oct and nov;
run;