簡體   English   中英

如何找到兩個數據集之間的匹配並提取SAS中的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM