I have 2 datasets, data1 is repeated and data2 is not. I would like to add a flag=1 in data1 if ID is in data2 and flag=0 if not. I have the following code but it is marking all as flag=0, can you please help me troubleshoot?
data dataflagged;
if _N_ = 1 then do;
declare hash CHK(dataset: "data2", multidata:'y');
CHK.definekey("ID");
CHK.definedone();
end;
set data1;
flag = (CHK.check()=1);
run;
quit;
If found, CHK.check()=0.
data dataflagged;
if _N_ = 1 then do;
declare hash CHK(dataset: "data2");
CHK.definekey("ID");
CHK.definedone();
end;
set data1;
flag = CHK.check() = 0;
run;
Are they really equal in both datasets, or just equal once formatted?
It *should* work.
data data1;
do id = 1,1,2,7,9; output; end;
format id 8.;
run;
data data2;
do id = 1,7; output; end;
format id 8.;
run;
data dataflagged;
if _N_ = 1 then do;
declare hash CHK(dataset: "data2");
CHK.definekey("ID");
CHK.definedone();
end;
set data1;
flag = CHK.check() = 0;
run;
proc print noobs; run;
id flag
1 1
1 1
2 0
7 1
9 0
Post the actual code you are using.
This works:
data data1;
do id = "1","1","2","7","9"; output; end;
run;
data data2;
do id = "1","7"; output; end;
run;
data dataflagged;
if _N_ = 1 then do;
declare hash CHK(dataset: "data2");
CHK.definekey("ID");
CHK.definedone();
end;
set data1;
flag = CHK.check() = 0;
run;
proc print noobs; run;
id flag
1 1
1 1
2 0
7 1
9 0
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!
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.
Ready to level-up your skills? Choose your own adventure.