<?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: Categorizing Multiple Diagnostic Fields using Complex Table Lookup in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644016#M192303</link>
    <description>&lt;P&gt;1. Create a format from Have 2&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data diag_fmt;
set have2;

fmtname = 'diag_fmt';
type='C';
start = icd;
label=category;

run;

proc format cntlin=diag_fmt;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. Apply the format to Have 1.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have1;

array diag(*) diag1-diag4;
array dcat(*) $1. dcat1-dcat4;

do i=1 to dim(diag);
dcat(i) = put(diag1, $diag_fmt.);
end;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I did not test this code, but it should work with some minor fixes necessary if the log generates any errors.&lt;/P&gt;</description>
    <pubDate>Wed, 29 Apr 2020 16:25:58 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2020-04-29T16:25:58Z</dc:date>
    <item>
      <title>Categorizing Multiple Diagnostic Fields using Complex Table Lookup</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644014#M192301</link>
      <description>&lt;P&gt;I'm am trying to categorize multiple diagnostic fields (diag1-diag12) across thousands of individuals (id, by row) according to 3 categories (A=always, S=Sometimes, N=Never). The final dataset should have a diagnostic category (dcat1-12) corresponding to each diagnostic field (diag1-12).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've tried to adapt test scoring code found in "&lt;A href="http://lexjansen.com/wuss/2005/sas_essentials/ess_get_it_together.pdf" target="_self"&gt;Get it together: Combining data with SAS MERGE, UPDATE, and SET&lt;/A&gt;" by Mel Widawski with some progress, but not the end result that I'm needing.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's an abbreviated example of the data I'm working with:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Have 1: Main Data&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data have1 (label='Main');&lt;/P&gt;&lt;P&gt;input id:1. diag1: $7. diag2:$7. diag3:$7. diag4:$7.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 S61131S S320 S32000B S32000B&lt;/P&gt;&lt;P&gt;2 S320 S320 S320 S320&lt;/P&gt;&lt;P&gt;3 S32000B S9702 S320 S61131S&lt;/P&gt;&lt;P&gt;4 S9702&amp;nbsp; . . .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Have 2: Scoring Data&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data have2 (label='scoring');&lt;/P&gt;&lt;P&gt;input icd:$7. category:$1.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;S61131S S&lt;/P&gt;&lt;P&gt;S320 N&lt;/P&gt;&lt;P&gt;S32000B A&lt;/P&gt;&lt;P&gt;S9702 N&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Want: Scored Data&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data want (label='scored');&lt;/P&gt;&lt;P&gt;input id:1. diag1: $7. diag2:$7. diag3:$7. diag4:$7. dcat1:$1. dcat2:$1. dcat3:$1. dcat4:$1.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 S61131S S320 S32000B S32000B S N A A&lt;/P&gt;&lt;P&gt;2 S320 S320 S320 S320 N N N N&lt;/P&gt;&lt;P&gt;3 S32000B S9702 S320 S61131S A N N S&lt;/P&gt;&lt;P&gt;4 S9702&amp;nbsp; . . . N . . .&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'd appreciate any guidance!&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2020 16:17:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644014#M192301</guid>
      <dc:creator>mnguye17</dc:creator>
      <dc:date>2020-04-29T16:17:46Z</dc:date>
    </item>
    <item>
      <title>Re: Categorizing Multiple Diagnostic Fields using Complex Table Lookup</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644016#M192303</link>
      <description>&lt;P&gt;1. Create a format from Have 2&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data diag_fmt;
set have2;

fmtname = 'diag_fmt';
type='C';
start = icd;
label=category;

run;

proc format cntlin=diag_fmt;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. Apply the format to Have 1.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have1;

array diag(*) diag1-diag4;
array dcat(*) $1. dcat1-dcat4;

do i=1 to dim(diag);
dcat(i) = put(diag1, $diag_fmt.);
end;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I did not test this code, but it should work with some minor fixes necessary if the log generates any errors.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2020 16:25:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644016#M192303</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-04-29T16:25:58Z</dc:date>
    </item>
    <item>
      <title>Re: Categorizing Multiple Diagnostic Fields using Complex Table Lookup</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644017#M192304</link>
      <description>&lt;P&gt;Some references to understand the code:&lt;/P&gt;
&lt;P&gt;Formats:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://support.sas.com/resources/papers/proceedings/proceedings/sugi30/001-30.pdf" target="_blank"&gt;https://support.sas.com/resources/papers/proceedings/proceedings/sugi30/001-30.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here's a tutorial on using Arrays in SAS&lt;BR /&gt;&lt;A href="https://stats.idre.ucla.edu/sas/seminars/sas-arrays/" target="_blank"&gt;https://stats.idre.ucla.edu/sas/seminars/sas-arrays/&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2020 16:28:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644017#M192304</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-04-29T16:28:13Z</dc:date>
    </item>
    <item>
      <title>Re: Categorizing Multiple Diagnostic Fields using Complex Table Lookup</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644020#M192307</link>
      <description>&lt;P&gt;You have2 data set is very close to what would be needed to create a custom format assuming none of the ICD values are repeated.&lt;/P&gt;
&lt;P&gt;Example of modifying the data set as needed. Variable names expected by proc format must be used.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data have2 ;
input start :$7. label :$1.;
fmtname='Dcat';
type='C';
datalines;
S61131S S
S320 N
S32000B A
S9702 N
;

proc format cntlin=have2;
run;&lt;/PRE&gt;
&lt;P&gt;Then you can use put(icdcodevalue, dcat.) to create the code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Arrays make this easier for doing the same thing to multiple variables.&lt;/P&gt;
&lt;PRE&gt;data want (label='Main');
   set have1;
   array dcat (4) $ 1;
   array diag diag1-diag4;
   do i=1 to dim(diag);
      dcat[i]= put(diag[i],dcat.);
   end;
   drop i;
run;&lt;/PRE&gt;
&lt;P&gt;Note use of the code box opened with the forum's &amp;lt;/&amp;gt; icon. The message windows will reformat text and may make code pasted into the windows not run because of changed white space or sometimes inserted html tags and such.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2020 16:32:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644020#M192307</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2020-04-29T16:32:05Z</dc:date>
    </item>
    <item>
      <title>Re: Categorizing Multiple Diagnostic Fields using Complex Table Lookup</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644025#M192309</link>
      <description>Thank you for the quick reply and the references! It worked with minor adjustments to my existing data!</description>
      <pubDate>Wed, 29 Apr 2020 16:48:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644025#M192309</guid>
      <dc:creator>mnguye17</dc:creator>
      <dc:date>2020-04-29T16:48:34Z</dc:date>
    </item>
    <item>
      <title>Re: Categorizing Multiple Diagnostic Fields using Complex Table Lookup</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644026#M192310</link>
      <description>Thank you for the helpful reply and the tip to make sure ICD codes aren't repeated. I'll note the code box formatting in the future. Cheers!</description>
      <pubDate>Wed, 29 Apr 2020 16:49:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Categorizing-Multiple-Diagnostic-Fields-using-Complex-Table/m-p/644026#M192310</guid>
      <dc:creator>mnguye17</dc:creator>
      <dc:date>2020-04-29T16:49:48Z</dc:date>
    </item>
  </channel>
</rss>

