Got a data set merging problem:
Data Have1;
| a1 | a2 | a3 |
| . | 4 | 3 |
| 1 | . | . |
| 2 | 3 | 4 |
| 4 | 9 | 3 |
| 9 | 5 | 2 |
data have2;
| a1 | b1 | b2 |
| 1 | 6 | 5 |
| 2 | 4 | . |
| 9 | 2 | 3 |
| 12 | 1 | 1 |
I want to merge data Have1 and Have2 in such a way that if the values of the variable a1 in Have1 match with values of a1 in Have2 then keep otherwise drop. For example I want the new set like:
| a1 | a2 | a3 | b1 | b2 |
| 1 | . | . | 6 | 5 |
| 2 | 3 | 4 | 4 | . |
| 9 | 5 | 2 | 2 | 3 |
I would appreciate very much if any expert out there help me out to get the result.
Thank you very much.
Sijansap
data want;
merge have1(in=a) have2(in=b);
by a1;
if a and b;
run
Hello,
here is an alternative method :
data want;
if 0 then set have2;
if _n_=1 then do;
declare hash h1(dataset:'have2');
h1.definekey('a1');
h1.definedata(all:'y');
h1.definedone();
end;
set have1;
r1=h1.find(key:a1);
if r1=0;
drop r1;
run; Thanks 🙂
And the SQL method:
proc sql;
create table want as
select
a.a1,
a.a2,
a.a3,
b.b1,
b.b2
from have1 a, have2 b
where a.a1 = b.a1;
quit;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.