[英]How to find a match between two data sets and extract values in SAS
我想比較兩個數據集並將匹配的觀測值提取到一個新的數據集。 例如,
我有兩個數據集,一個來自十月,另一個來自十一月,如下。
十月數據集
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中執行此操作?
如果只希望OCTOBER中CTN值位於NOVEMBER中的記錄,則這似乎是最直接的SQL語法。
select * from OCTOBER
where CTN in (select CTN from NOVEMBER)
;
如果將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;
@Tom的答案是我會怎么做,但是這是在沒有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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.