<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: use HASH to realize the logic in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105994#M22089</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;FriedEgg,&lt;/P&gt;&lt;P&gt;Thanks! I learn from yours and chang_y_chung's.]And find the way.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data m01;&lt;BR /&gt;input id score @@;&lt;BR /&gt;cards;&lt;BR /&gt;1 12 1 4 1 20 1 109 2 189 2 18 2 99 3 12 3 18 3 146 4 27 4 99 5 80 5 100 5 180 6 101 6 700 7 12 8 99&amp;nbsp; &lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;data _NULL_;&lt;BR /&gt; length has12 has18 hasge100 min1 min2 new_score 8.;&lt;BR /&gt; if _N_=1 then do;&lt;BR /&gt; declare hash h(ordered:"a");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definekey("id");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedata("id","has12","has18","hasge100","min1","min2","new_score");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedone();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt; set m01 end=last;&lt;BR /&gt;if h.find() ne 0 then do;&lt;BR /&gt;has12=0;has18=0;hasge100=0;&lt;BR /&gt;min1=9999;min2=9999;&lt;BR /&gt;new_score=0;&lt;BR /&gt;h.add();&lt;BR /&gt;end;&lt;BR /&gt;if h.find()=0 then Do;&lt;BR /&gt; if score=12 then has12=1;&lt;BR /&gt; if score=18 then has18=1;&lt;BR /&gt; if score ge 100 then hasge100=1;&lt;BR /&gt;/* h.replace();*/&lt;BR /&gt; max=max(score,max);&lt;BR /&gt; min1=min(score,min1);&lt;BR /&gt; if hasge100=1 then min2=min(score,min2);&lt;BR /&gt; new_score=min1;&lt;BR /&gt; if hasge100=1 then new_score=min2;&lt;BR /&gt; if has18=1 then new_score=18;&lt;BR /&gt; if has12=1 then new_score=12;&lt;BR /&gt; if has12=1 and has18=1 then new_score=12;&lt;BR /&gt;/* if has12=1 then new_score=12;*/&lt;BR /&gt;/* if has18=1 then new_score=18;*/&lt;BR /&gt;/* if has12=1 and has18=1 then new_score=12;*/&lt;BR /&gt;/* if hasge100=1 then new_score=min2;*/&lt;BR /&gt;/*&amp;nbsp; else new_score=min1;*/&lt;BR /&gt; h.replace();&lt;BR /&gt; end;&lt;BR /&gt;if last then h.output(dataset:"m02");&lt;BR /&gt;run;&lt;BR /&gt;proc print data=m02(keep=id new_score) noobs;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 09 May 2012 14:13:25 GMT</pubDate>
    <dc:creator>summy</dc:creator>
    <dc:date>2012-05-09T14:13:25Z</dc:date>
    <item>
      <title>use HASH to realize the logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105989#M22084</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hi.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I have a dataset with two variables,one is ID which is not unique and the other is Scores.I want to create a new variable New_Score.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Here is the logic:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1)If the ID have the value of 12 or 18,then New_Score equal to 12 or 18;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2)If the ID have the value of 12 and also 18,then New_Score equal to 12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3)If all the values of ID are less than 100,then New_Score equal to minimun value of ID;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4)If not all the values of ID are less than 100,then New_Score equal to minimun value of ID that are greater than or equal to 100;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;data m01;&lt;/P&gt;&lt;P&gt;input ID Scores;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 12&lt;/P&gt;&lt;P&gt;1 20&lt;/P&gt;&lt;P&gt;2 18&lt;/P&gt;&lt;P&gt;2 99&lt;/P&gt;&lt;P&gt;3 12&lt;/P&gt;&lt;P&gt;3 18&lt;/P&gt;&lt;P&gt;4 27&lt;/P&gt;&lt;P&gt;4 99&lt;/P&gt;&lt;P&gt;5 80&lt;/P&gt;&lt;P&gt;5 100&lt;/P&gt;&lt;P&gt;5 180&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;The dataset I want is this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 12&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 18&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 12&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 27&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 100&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to use HASH to create the dataset,but I do not how to do it.Please help me.Thanks in advance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 May 2012 12:02:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105989#M22084</guid>
      <dc:creator>summy</dc:creator>
      <dc:date>2012-05-07T12:02:26Z</dc:date>
    </item>
    <item>
      <title>Re: use HASH to realize the logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105990#M22085</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data foo;&lt;/P&gt;&lt;P&gt;input id _score @@;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 12 1 20 2 18 2 99 3 12 3 18&lt;/P&gt;&lt;P&gt;4 27 4 99 5 80 5 100 5 180&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* with hash */&lt;/P&gt;&lt;P&gt;data bar;&lt;/P&gt;&lt;P&gt;if 0 then set foo;&lt;/P&gt;&lt;P&gt;dcl hash foo(dataset:'foo',multidata:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; foo.definekey('id');&lt;/P&gt;&lt;P&gt;&amp;nbsp; foo.definedata(all:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; foo.definedone();&lt;/P&gt;&lt;P&gt;dcl hash k(dataset:'foo',ordered:'y',duplicate:'r');&lt;/P&gt;&lt;P&gt;&amp;nbsp; k.definekey('id');&lt;/P&gt;&lt;P&gt;&amp;nbsp; k.definedata('id');&lt;/P&gt;&lt;P&gt;&amp;nbsp; k.definedone();&lt;/P&gt;&lt;P&gt;dcl hiter iter('k');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rc=iter.first();&lt;/P&gt;&lt;P&gt;do while(rc=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=foo.find();&lt;/P&gt;&lt;P&gt;&amp;nbsp; score=_score;&lt;/P&gt;&lt;P&gt;&amp;nbsp; r=foo.find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp; do while(r=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; select;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; when (_score ge 100 and score ge 100) score=min(score,_score);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; when (_score ge 100 and score lt 100) score=max(score,_score);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; when (_score eq&amp;nbsp; 12 or&amp;nbsp; score eq&amp;nbsp; 12) score=12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; when (_score eq&amp;nbsp; 18 or&amp;nbsp; score eq&amp;nbsp; 18) score=18;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; otherwise score=min(score,_score);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; r=foo.find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=iter.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;keep id score;&lt;/P&gt;&lt;P&gt;stop;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* with dow */&lt;/P&gt;&lt;P&gt;proc sort data=foo; by id _score; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data bar;&lt;/P&gt;&lt;P&gt;do until(last.id);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set foo;&lt;/P&gt;&lt;P&gt;&amp;nbsp; by id;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; when(_score ge 100 and score ge 100) score=min(score,_score);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; when(_score ge 100 and score lt 100) score=max(score,_score);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; when(_score eq&amp;nbsp; 12 or&amp;nbsp; score eq&amp;nbsp; 12) score=12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; when(_score eq&amp;nbsp; 18 or&amp;nbsp; score eq&amp;nbsp; 18) score=18;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; otherwise score=min(score,_score);&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;drop _:;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 May 2012 19:01:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105990#M22085</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2012-05-07T19:01:20Z</dc:date>
    </item>
    <item>
      <title>Re: use HASH to realize the logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105991#M22086</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, here is another way. No hash, though.&lt;/P&gt;&lt;P style="font-family: Courier New; font-size: 90%; line-height: 1.1;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;/* sample data */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt; one;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;infile&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;cards&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;missover&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;input&lt;/SPAN&gt;&lt;SPAN&gt; id score @;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;do&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;while&lt;/SPAN&gt;&lt;SPAN&gt; (not missing(score));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;output&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;input&lt;/SPAN&gt;&lt;SPAN&gt; score @;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;cards&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1 12 20&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2 18 99&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3 12 18&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;4 27 99&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;5 80 100 180&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;/* aggregate */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt; two;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; has12 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;; has18 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;; hasGE100 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; min1 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;99999&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;; min2 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;99999&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;; &lt;/SPAN&gt;&lt;SPAN style="color: #008000;"&gt;/* larger than any possible score */&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;do&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;until&lt;/SPAN&gt;&lt;SPAN&gt; (last.id);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;set&lt;/SPAN&gt;&lt;SPAN&gt; one;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;by&lt;/SPAN&gt;&lt;SPAN&gt; id;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;select&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt;(score = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;12&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;) has12 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt;(score = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;18&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;) has18 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;100&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &amp;lt;= score) hasGE100 = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;otherwise&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; min1 = min(score, min1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;if&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;100&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;=score &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;then&lt;/SPAN&gt;&lt;SPAN&gt; min2 = min(score, min2);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;select&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt; (has12 and has18) new_score = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;12&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt; (has12) new_score = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;12&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt; (has18) new_score = &lt;/SPAN&gt;&lt;SPAN style="color: #008080;"&gt;&lt;STRONG&gt;18&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;when&lt;/SPAN&gt;&lt;SPAN&gt; (hasGE100) new_score = min2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;otherwise&lt;/SPAN&gt;&lt;SPAN&gt; new_score = min1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;keep&lt;/SPAN&gt;&lt;SPAN&gt; id new_score;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;/* check */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;print&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;data&lt;/SPAN&gt;&lt;SPAN&gt;=two &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff;"&gt;noobs&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #000080;"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;/* on lst&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new_&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp; score&lt;/SPAN&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 27 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100 &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008000;"&gt;*/&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 May 2012 19:52:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105991#M22086</guid>
      <dc:creator>chang_y_chung_hotmail_com</dc:creator>
      <dc:date>2012-05-07T19:52:27Z</dc:date>
    </item>
    <item>
      <title>Re: use HASH to realize the logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105992#M22087</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks!But the hash code can not run at SAS 9.1.3.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 May 2012 14:42:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105992#M22087</guid>
      <dc:creator>summy</dc:creator>
      <dc:date>2012-05-08T14:42:21Z</dc:date>
    </item>
    <item>
      <title>Re: use HASH to realize the logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105993#M22088</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Summy,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hash objects in 9.1.3 cannot hold multiple data records per key.&amp;nbsp; While there are still ways to do this on your version with hash, I would recommend taking one of the DOW style approaches myself and chang_y_chung demonstrated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 May 2012 15:16:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105993#M22088</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2012-05-08T15:16:33Z</dc:date>
    </item>
    <item>
      <title>Re: use HASH to realize the logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105994#M22089</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;FriedEgg,&lt;/P&gt;&lt;P&gt;Thanks! I learn from yours and chang_y_chung's.]And find the way.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data m01;&lt;BR /&gt;input id score @@;&lt;BR /&gt;cards;&lt;BR /&gt;1 12 1 4 1 20 1 109 2 189 2 18 2 99 3 12 3 18 3 146 4 27 4 99 5 80 5 100 5 180 6 101 6 700 7 12 8 99&amp;nbsp; &lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;data _NULL_;&lt;BR /&gt; length has12 has18 hasge100 min1 min2 new_score 8.;&lt;BR /&gt; if _N_=1 then do;&lt;BR /&gt; declare hash h(ordered:"a");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definekey("id");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedata("id","has12","has18","hasge100","min1","min2","new_score");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedone();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt; set m01 end=last;&lt;BR /&gt;if h.find() ne 0 then do;&lt;BR /&gt;has12=0;has18=0;hasge100=0;&lt;BR /&gt;min1=9999;min2=9999;&lt;BR /&gt;new_score=0;&lt;BR /&gt;h.add();&lt;BR /&gt;end;&lt;BR /&gt;if h.find()=0 then Do;&lt;BR /&gt; if score=12 then has12=1;&lt;BR /&gt; if score=18 then has18=1;&lt;BR /&gt; if score ge 100 then hasge100=1;&lt;BR /&gt;/* h.replace();*/&lt;BR /&gt; max=max(score,max);&lt;BR /&gt; min1=min(score,min1);&lt;BR /&gt; if hasge100=1 then min2=min(score,min2);&lt;BR /&gt; new_score=min1;&lt;BR /&gt; if hasge100=1 then new_score=min2;&lt;BR /&gt; if has18=1 then new_score=18;&lt;BR /&gt; if has12=1 then new_score=12;&lt;BR /&gt; if has12=1 and has18=1 then new_score=12;&lt;BR /&gt;/* if has12=1 then new_score=12;*/&lt;BR /&gt;/* if has18=1 then new_score=18;*/&lt;BR /&gt;/* if has12=1 and has18=1 then new_score=12;*/&lt;BR /&gt;/* if hasge100=1 then new_score=min2;*/&lt;BR /&gt;/*&amp;nbsp; else new_score=min1;*/&lt;BR /&gt; h.replace();&lt;BR /&gt; end;&lt;BR /&gt;if last then h.output(dataset:"m02");&lt;BR /&gt;run;&lt;BR /&gt;proc print data=m02(keep=id new_score) noobs;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 09 May 2012 14:13:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/use-HASH-to-realize-the-logic/m-p/105994#M22089</guid>
      <dc:creator>summy</dc:creator>
      <dc:date>2012-05-09T14:13:25Z</dc:date>
    </item>
  </channel>
</rss>

