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!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.