<?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 Replace Set-Merge loop with hash table lookup in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170968#M44166</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Replace Set-Merge loop with hash table lookup&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Hello,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Big time SAS newbie here.&amp;nbsp; I am working with some inherited code and trying to update it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;I have a table with 14 columns for diagnosis (DIAG1-14). I need to compare the values for diagnosis 1 through 14 to another table containing "avoidable" ER diagnoses for matches.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;The current program loops 14 times matching one column at a time with a lookup table: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;/*TEST DIAG1*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; DATA D1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; SET QIP.DHCS_AER;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; AF1=1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; KEEP DIAG1 AF1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; RUN;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; PROC SORT; BY DIAG1; RUN;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; DATA PASS1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; MERGE ED2 (IN=IN1) D1 (IN=IN2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; BY DIAG1; IF IN1; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; RUN;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;...and so on up to DIAG14&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;After the 14 passes a record is flagged as 'avoidable' if diagnoses only found in the lookup table are found in DIAG1-14 (if any other diagnosis is found it is marked 'unavoidable'):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;DATA AVOID1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; SET PASS14;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG1 NE ' ' AND AF1=. THEN AF1=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG2 NE ' ' AND AF2=. THEN AF2=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG3 NE ' ' AND AF3=. THEN AF3=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG4 NE ' ' AND AF4=. THEN AF4=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG5 NE ' ' AND AF5=. THEN AF5=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG6 NE ' ' AND AF6=. THEN AF6=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG7 NE ' ' AND AF7=. THEN AF7=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG8 NE ' ' AND AF8=. THEN AF8=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG9 NE ' ' AND AF9=. THEN AF9=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG10 NE ' ' AND AF10=. THEN AF10=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG11 NE ' ' AND AF11=. THEN AF11=2; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG12 NE ' ' AND AF12=. THEN AF12=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG13 NE ' ' AND AF13=. THEN AF13=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG14 NE ' ' AND AF14=. THEN AF14=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; LENGTH GROUP $15.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; IF AF1=2 OR AF2=2 OR AF3=2 OR AF4=2 OR AF5=2 OR AF6=2 OR AF7=2 OR AF8=2 OR AF9=2 OR AF10=2 OR&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; AF11=2 OR AF12=2 OR AF13=2 OR AF14=2 OR AF15=2 THEN&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; GROUP='UNAVOIDABLE'; ELSE&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; GROUP='AVOIDABLE';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; FORMAT ADMITDT DATE7.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;RUN;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;My question is:&amp;nbsp;&amp;nbsp; Would using DCL HASH be a way to improve this loop? &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;If so, is there any code or white papers anyone would recommend I look at?&amp;nbsp; Any start on the structure of the HASH statement would be greatly appreciated as well.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Thank you very much.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Jesse&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 06 Jan 2015 18:19:23 GMT</pubDate>
    <dc:creator>Jse</dc:creator>
    <dc:date>2015-01-06T18:19:23Z</dc:date>
    <item>
      <title>Replace Set-Merge loop with hash table lookup</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170968#M44166</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Replace Set-Merge loop with hash table lookup&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Hello,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Big time SAS newbie here.&amp;nbsp; I am working with some inherited code and trying to update it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;I have a table with 14 columns for diagnosis (DIAG1-14). I need to compare the values for diagnosis 1 through 14 to another table containing "avoidable" ER diagnoses for matches.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;The current program loops 14 times matching one column at a time with a lookup table: &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;/*TEST DIAG1*/&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; DATA D1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; SET QIP.DHCS_AER;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; AF1=1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; KEEP DIAG1 AF1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; RUN;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; PROC SORT; BY DIAG1; RUN;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; DATA PASS1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; MERGE ED2 (IN=IN1) D1 (IN=IN2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; BY DIAG1; IF IN1; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; RUN;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;...and so on up to DIAG14&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;After the 14 passes a record is flagged as 'avoidable' if diagnoses only found in the lookup table are found in DIAG1-14 (if any other diagnosis is found it is marked 'unavoidable'):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;DATA AVOID1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; SET PASS14;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG1 NE ' ' AND AF1=. THEN AF1=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG2 NE ' ' AND AF2=. THEN AF2=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG3 NE ' ' AND AF3=. THEN AF3=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG4 NE ' ' AND AF4=. THEN AF4=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG5 NE ' ' AND AF5=. THEN AF5=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG6 NE ' ' AND AF6=. THEN AF6=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG7 NE ' ' AND AF7=. THEN AF7=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG8 NE ' ' AND AF8=. THEN AF8=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG9 NE ' ' AND AF9=. THEN AF9=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG10 NE ' ' AND AF10=. THEN AF10=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG11 NE ' ' AND AF11=. THEN AF11=2; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG12 NE ' ' AND AF12=. THEN AF12=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG13 NE ' ' AND AF13=. THEN AF13=2;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; IF DIAG14 NE ' ' AND AF14=. THEN AF14=2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; LENGTH GROUP $15.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; IF AF1=2 OR AF2=2 OR AF3=2 OR AF4=2 OR AF5=2 OR AF6=2 OR AF7=2 OR AF8=2 OR AF9=2 OR AF10=2 OR&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; AF11=2 OR AF12=2 OR AF13=2 OR AF14=2 OR AF15=2 THEN&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; GROUP='UNAVOIDABLE'; ELSE&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; GROUP='AVOIDABLE';&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; FORMAT ADMITDT DATE7.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;RUN;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;My question is:&amp;nbsp;&amp;nbsp; Would using DCL HASH be a way to improve this loop? &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;If so, is there any code or white papers anyone would recommend I look at?&amp;nbsp; Any start on the structure of the HASH statement would be greatly appreciated as well.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Thank you very much.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Arial Black', sans-serif;"&gt;Jesse&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 06 Jan 2015 18:19:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170968#M44166</guid>
      <dc:creator>Jse</dc:creator>
      <dc:date>2015-01-06T18:19:23Z</dc:date>
    </item>
    <item>
      <title>Re: Replace Set-Merge loop with hash table lookup</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170969#M44167</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Search both Lexjansen.com and sascommunity.org about analysis with diagnosis code(s), as well as here. It's a well documented subject.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 06 Jan 2015 18:30:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170969#M44167</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-01-06T18:30:07Z</dc:date>
    </item>
    <item>
      <title>Re: Replace Set-Merge loop with hash table lookup</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170970#M44168</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Let ED2 contain SASHELP.CLASS. Let your Diagnosis be NAME. Another Data set, D1, has SEVEN NAMES instead of&amp;nbsp; 14 diagnosis. The purpose is LOOKUP D1 for every NAME of ED2 and&lt;/P&gt;&lt;P&gt;make the GROUP as you wanted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data ed2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set sashelp.class;&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;data d1;&lt;/P&gt;&lt;P&gt;input Name $8.;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;datalines;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Barbara&lt;/P&gt;&lt;P&gt;James&amp;nbsp; &lt;/P&gt;&lt;P&gt;Jane&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;Joyce&amp;nbsp; &lt;/P&gt;&lt;P&gt;Louise &lt;/P&gt;&lt;P&gt;Robert &lt;/P&gt;&lt;P&gt;Ronald&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;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _n_ = 1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 0 then set d1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare hash h(dataset:'d1', hashexp:20);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definekey('Name');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set ed2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Group = 'Unavoidable';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if h.find() = 0 then Group = 'Avoidable';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Jan 2015 11:15:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170970#M44168</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2015-01-07T11:15:05Z</dc:date>
    </item>
    <item>
      <title>Re: Replace Set-Merge loop with hash table lookup</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170971#M44169</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you google search "sas hash sugi", you should find easily what you are looking for. I haven't tested this code. If your lookup is actually a lookup with only 1 value to join, then try this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA D1;&lt;BR /&gt; SET QIP.DHCS_AER;&lt;BR /&gt; AF1=1;&lt;BR /&gt; KEEP DIAG1 AF1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;* etc. - until you#ve defined your 14 data sets, maybe use call execute or so to create code dynamically. no sorting required;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data Hash (Drop=rc:);&lt;BR /&gt;&amp;nbsp; Length Group $15.;&lt;BR /&gt;&amp;nbsp; Array rc{*} rc1-rc14;&lt;BR /&gt;&amp;nbsp; Set ED2;&lt;BR /&gt;&amp;nbsp; If _N_ =1 Then Do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Declare Hash H1 (Dataset:'D1');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; H1.Definekey('Diag1');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; H1.Definedata(All:'y'); &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; H1.Definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Declare Hash H2 (Dataset:'D2');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; H2.Definekey('Diag2');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; H2.Definedata(All:'y');&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; H2.Definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * etc.;&lt;BR /&gt;&amp;nbsp; End;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc1=H1.Find();&lt;BR /&gt;&amp;nbsp; rc2=H2.Find();&lt;BR /&gt;&amp;nbsp; * etc.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; If Sum(of rc{*}) gt 0 Then Group='UNAVOIDABLE';&lt;BR /&gt;&amp;nbsp; Else Group='AVOIDABLE';&lt;BR /&gt;Run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Jan 2015 13:04:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Replace-Set-Merge-loop-with-hash-table-lookup/m-p/170971#M44169</guid>
      <dc:creator>user24feb</dc:creator>
      <dc:date>2015-01-07T13:04:20Z</dc:date>
    </item>
  </channel>
</rss>

