<?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 Need help with loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144294#M28777</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good morning,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am hoping someone can help me with a loop I'm trying to put together.&amp;nbsp; My code below works, and does the following:&amp;nbsp; 1. creates a table with a count of how many codes there are per idnum/date grouping 2. stores the maximum count in a macro variable called varcount (this should be the maximum number of columns I would have when the data is transposed to have one row per unique idnum/date grouping and codes in additional columns) 3.&amp;nbsp; creates a list of all the unique codes in the file 4.&amp;nbsp; goes through every code in the code list and creates a new variable for each code named with "cd" and the actual code value.&amp;nbsp; 5.&amp;nbsp; currently, i have written the code out for up to 14 columns (see green font below), and it works fine.&amp;nbsp; This just puts a 1 in the additional column created in the outer loop based on whether the code was present in columns 1 through 14.&amp;nbsp; I would like to make this into an inner loop that will go from 1 to varcount since varcount is the maximum number of columns that would exist.&amp;nbsp; I have tried a few things, but nothing has worked, so I went back to what worked so I could at least show what I am trying to do.&amp;nbsp; Can anyone help me understand how to do this?&amp;nbsp; Any help is greatly appreciated.&amp;nbsp; I am fairly new to some of this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options;&lt;BR /&gt;%include "C:\SAS Information\Macros\for.sas";&lt;/P&gt;&lt;P&gt;%let list = [work.srvc_cd_list];&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt; create table sasuser.codespercase as (&lt;BR /&gt; select count(srvc_cd)as Count&lt;BR /&gt; from sasuser.sample_file&lt;BR /&gt; group by idnum, date);&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;BR /&gt; select max(count)&lt;BR /&gt; into :varcount&lt;BR /&gt; from sasuser.codespercase;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt; create table srvc_cd_list as&lt;BR /&gt; (select distinct srvc_cd&lt;BR /&gt; from sasuser.sample_file);&lt;BR /&gt;quit;&lt;BR /&gt;data work.new;&lt;BR /&gt; set SASUSER.TRNSTRANSPOSEDSAMPLE_file;&lt;BR /&gt; %for(srvc_cd, in=&amp;amp;list, do=%nrstr(&lt;BR /&gt; length cd&amp;amp;srvc_cd 3.;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column1,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column2,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column3,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column4,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column5,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column6,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column7,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column8,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column9,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column10,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column11,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column12,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column13,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column14,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt; ))&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 31 Jul 2014 13:32:14 GMT</pubDate>
    <dc:creator>ebwest</dc:creator>
    <dc:date>2014-07-31T13:32:14Z</dc:date>
    <item>
      <title>Need help with loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144294#M28777</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good morning,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am hoping someone can help me with a loop I'm trying to put together.&amp;nbsp; My code below works, and does the following:&amp;nbsp; 1. creates a table with a count of how many codes there are per idnum/date grouping 2. stores the maximum count in a macro variable called varcount (this should be the maximum number of columns I would have when the data is transposed to have one row per unique idnum/date grouping and codes in additional columns) 3.&amp;nbsp; creates a list of all the unique codes in the file 4.&amp;nbsp; goes through every code in the code list and creates a new variable for each code named with "cd" and the actual code value.&amp;nbsp; 5.&amp;nbsp; currently, i have written the code out for up to 14 columns (see green font below), and it works fine.&amp;nbsp; This just puts a 1 in the additional column created in the outer loop based on whether the code was present in columns 1 through 14.&amp;nbsp; I would like to make this into an inner loop that will go from 1 to varcount since varcount is the maximum number of columns that would exist.&amp;nbsp; I have tried a few things, but nothing has worked, so I went back to what worked so I could at least show what I am trying to do.&amp;nbsp; Can anyone help me understand how to do this?&amp;nbsp; Any help is greatly appreciated.&amp;nbsp; I am fairly new to some of this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options;&lt;BR /&gt;%include "C:\SAS Information\Macros\for.sas";&lt;/P&gt;&lt;P&gt;%let list = [work.srvc_cd_list];&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt; create table sasuser.codespercase as (&lt;BR /&gt; select count(srvc_cd)as Count&lt;BR /&gt; from sasuser.sample_file&lt;BR /&gt; group by idnum, date);&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;BR /&gt; select max(count)&lt;BR /&gt; into :varcount&lt;BR /&gt; from sasuser.codespercase;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt; create table srvc_cd_list as&lt;BR /&gt; (select distinct srvc_cd&lt;BR /&gt; from sasuser.sample_file);&lt;BR /&gt;quit;&lt;BR /&gt;data work.new;&lt;BR /&gt; set SASUSER.TRNSTRANSPOSEDSAMPLE_file;&lt;BR /&gt; %for(srvc_cd, in=&amp;amp;list, do=%nrstr(&lt;BR /&gt; length cd&amp;amp;srvc_cd 3.;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column1,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column2,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column3,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column4,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column5,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column6,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column7,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column8,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column9,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column10,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column11,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column12,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column13,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #008080;"&gt; if input(column14,comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/SPAN&gt;&lt;BR /&gt; ))&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jul 2014 13:32:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144294#M28777</guid>
      <dc:creator>ebwest</dc:creator>
      <dc:date>2014-07-31T13:32:14Z</dc:date>
    </item>
    <item>
      <title>Re: Need help with loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144295#M28778</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Not seeing any test data doesn't help, but it would appear that you are trying to get a transposed table.&amp;nbsp; Check out the transpose function.&lt;/P&gt;&lt;P&gt;Alternatively arrays:&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count(distinct NAME)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; into&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :TOTAL_VARS&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE_FILE;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array cd{&amp;amp;TOTAL_VARS.} 1.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; array column(&amp;amp;TOTAL_VARS.);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do I=1 to &amp;amp;TOTAL_VARS.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if COLUMN{I}=&amp;amp;SRVC_CD. then CD{I}=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jul 2014 13:56:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144295#M28778</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-07-31T13:56:33Z</dc:date>
    </item>
    <item>
      <title>Re: Need help with loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144296#M28779</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you.&amp;nbsp; I did some further reading on arrays, and tweaked that block of code like below.&amp;nbsp; This worked.&amp;nbsp; Thanks again for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data work.new;&lt;/P&gt;&lt;P&gt; set SASUSER.TRNSTRANSPOSEDSAMPLE_CLAIMS;&lt;/P&gt;&lt;P&gt; array column(&amp;amp;varcount);&lt;/P&gt;&lt;P&gt; %for(srvc_cd, in=&amp;amp;list, do=%nrstr(&lt;/P&gt;&lt;P&gt; length cd&amp;amp;srvc_cd 3.;&lt;/P&gt;&lt;P&gt; do i=1 to &amp;amp;varcount.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if input(column{i},comma10.)=&amp;amp;srvc_cd then cd&amp;amp;srvc_cd = 1;&lt;/P&gt;&lt;P&gt; end;&lt;/P&gt;&lt;P&gt; ))&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jul 2014 14:32:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-loop/m-p/144296#M28779</guid>
      <dc:creator>ebwest</dc:creator>
      <dc:date>2014-07-31T14:32:55Z</dc:date>
    </item>
  </channel>
</rss>

