I've trouble understanding the defining keys and data in hashing. I read the document under
Still I couldn't understand. May I request someone to explain about defining keys and data in hashing in simple terms?
Thanks in advance for any help you offer me.
I am going through some training myself so there are most likely better sources but I will explain something as I understand it to join the conversation:
data want;
merge emphours (in=a)
employees(in=b);
by empid;
if a;
run;
data empinfo;
length empid $6. empln $30. empfn $25. empmi $1. gender $1. startdate 8. emppaylevel $5.;
if _N_ = 1 then do;
declare hash new(dataset: 'employees',ordered: 'y');
new.definekey('empid');
new.definedata('empln','empfn','empmi','gender','startdate','emppaylevel');
new.definedone();
call missing(empln,empfn,empmi,gender,startdate,emppaylevel);
end;
set emphours;
rc = new.find();
drop rc;
format startdate mmddyy10.;
run;
The two pieces of code produce the same results, definekey is the key in the hash table that I am generating and the field that I will be joining on. definedata() is the fields that I want to pull in. This is a simple merge, I am pulling fields from the employee dataset, joining to the emphours dataset. This is a very simple example for hash.
Hope I provided some help.
Mark
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.