I'm looking to compare two datasets that have just two variables each(Name & Num). Rather than return a listing of the differences between the datasets, what I'm after is a listing of identical obervations in the two datasets.
DATA ONE;
INPUT NAME NUM $ ;
CARDS;
FRED 1234
WILMA 4567
BARNEY 8369
BAMBAM 7894
;
RUN;
DATA TWO;
INPUT NAME NUM $ ;
CARDS;
FRED 1234
WILMA 8369
BETTY 7894
;
RUN;
PROC SORT DATA=ONE NODUPKEY;
BY NAME NUM;
RUN;
PROC SORT DATA=TWO NODUPKEY;
BY NAME NUM;
RUN;
DATA FINAL;
PROC COMPARE BASE=ONE COMPARE=TWO;
RUN;
OUTPUT:
I can't seem to find anything that will allow me to report on identical oberservations.
Any suggestions?
Thanks
First you'll likely get better results if Name is character.
Try this;
DATA ONE;
INPUT NAME $ NUM $ ;
CARDS;
FRED 1234
WILMA 4567
BARNEY 8369
BAMBAM 7894
;
RUN;
DATA TWO;
INPUT NAME $ NUM $ ;
CARDS;
FRED 1234
WILMA 8369
BETTY 7894
;
RUN;
PROC SORT DATA=ONE NODUPKEY;
BY NAME NUM;
RUN;
PROC SORT DATA=TWO NODUPKEY;
BY NAME NUM;
RUN;
data three;
merge one (in=inone)
two (in=intwo);
by name num;
if inone and intwo;
run;
Try DUPOUT= option in Proc Sort,
data _stack;
set one two;
run;
proc sort data=_stack dupout=_wanted_dup nodupkey;
by _all_;
run;
First you'll likely get better results if Name is character.
Try this;
DATA ONE;
INPUT NAME $ NUM $ ;
CARDS;
FRED 1234
WILMA 4567
BARNEY 8369
BAMBAM 7894
;
RUN;
DATA TWO;
INPUT NAME $ NUM $ ;
CARDS;
FRED 1234
WILMA 8369
BETTY 7894
;
RUN;
PROC SORT DATA=ONE NODUPKEY;
BY NAME NUM;
RUN;
PROC SORT DATA=TWO NODUPKEY;
BY NAME NUM;
RUN;
data three;
merge one (in=inone)
two (in=intwo);
by name num;
if inone and intwo;
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.