need to incorporate 'NODUPKEY' in hash short as in proc sort nodupkey. Any examples?
data have;
input id var @@;
cards;
1 2 1 3 10 6 4 5 10 7 8 2
;
data _null_;
if _n_=1 then do;
dcl hash h( ordered: 'a');
h.definekey('id');
h.definedata('id','var');
h.definedone();
end;
do until (done);
set have end=done;
_rc=h.add();
end;
h.output(dataset:'want');
stop;
run;
Regards,
Haikuo
The hash object by default drops duplicate keys. This is controlled by the duplicate option which tells SAS whether to replace or error when a duplicate key is encountered (when loading a dataset into a hash using the dataset option). To avoid this use the multidata:'y' option in the declare statement.
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002576871.htm
Check out the post by MikeZdeb in the link for a great list of reference papers for learning about Hash objects in SAS:
Reminded by FriedEgg's comments "The hash object by default drops duplicate keys.", add() method is not needed for this purpose if choose to load the dataset once for all. However, if chose the last record when duplicating, replace() may still be needed:
data have;
input id var @@;
cards;
1 2 1 3 10 6 4 5 10 7 8 2
;
data _null_;
set have (obs=1);
dcl hash h( dataset: 'have', ordered: 'a');
h.definekey('id');
h.definedata('id','var');
h.definedone();
h.output(dataset:'want');
run;
This one feels better.
Regards,
Haikuo
I may not have made myself clear enough:
keep the first incidence of key
dcl hash h(dataset:'have', ordered:'a');
keep the last incidence of key
dcl hash h(dataset:'have', ordered:'a' ,duplicate:'r');
keep all incidience of key
dcl hash h(dataset:'have', ordered:'a' ,multidata:'y');
fail if duplicates of key exist in loading file
dcl hash h(dataset:'have', ordered:'a' ,duplicate:'e');
Learned and Agreed!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.