Hi All, I'm a relatively inexperienced SAS user and this is my first post. Thanks in advance for any help! I've inherited a huge code at the company that uses hash objects to merge tables due to runtime concerns. The problem here boils down to I'm trying to update the code such that for some tables that are loaded into memory with multiple keys, do a find on one key, and if not found, use another key. I've created an example below: data basedata; input key1 $ key2 $ value; datalines; aaa aa 0 aab aa 0 aba ab 0 ac ac 0 ad ad 0 ; run; data hashdata; input key1 $ key2 $ value; datalines; aaa aa 1 aab aa 2 aba ab 3 aca ac 4 ada ad 5 ; run; data results; set basedata; if _n_=1 then do; declare hash hs(dataset:'hashdata'); hs.definekey('key1','key2') hs.definedata('value'); hs.definedone(); end; rc=hs.find(); run; This will give the result of key1 key2 value rc aaa aa 1 0 aab aa 2 0 aba ab 3 0 ac ac 0 -2147450842 ad ad 0 -2147450842 Given that in basedata, when key1=key2, key2 will have no duplicates in either basedata or hashdata, how should I code this such that if key1/key2 combination not found, then use key2 only? (edit) I'm trying to get the result of: key1 key2 value rc aaa aa 1 0 aab aa 2 0 aba ab 3 0 ac ac 4 0 ad ad 5 0 I know how to achieve this by changing the code altogether using data step or proc SQL, but I'm trying to avoid doing that because it will mean changing a lot of code completely.. Regards, Michael Xu
... View more