<?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: how can i recode using array in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314175#M68391</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31461"&gt;@mkeintz﻿&lt;/a&gt;&amp;nbsp;small typo in the variable names - second and fourth set starts with 30 rather than S30?&lt;/P&gt;</description>
    <pubDate>Fri, 25 Nov 2016 01:28:22 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2016-11-25T01:28:22Z</dc:date>
    <item>
      <title>how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314133#M68369</link>
      <description>&lt;P&gt;Trying to recode the following into more condensed code&lt;/P&gt;&lt;P&gt;sickday1=S30Q4_30d_1+S30Q5_30d_1+S30Q6_30d_1+S30Q7_30d_1; sickday2=S30Q4_30d_2+S30Q5_30d_2+S30Q6_30d_2+S30Q7_30d_2; sickday3=S30Q4_30d_3+S30Q5_30d_3+S30Q6_30d_3+S30Q7_30d_3;&lt;/P&gt;&lt;P&gt;this format continues until sickday30.&lt;/P&gt;&lt;P&gt;I was able to do so the following with the following in a data statement:&lt;/P&gt;&lt;P&gt;%macro sick (i); sicksday&amp;amp;i. = S30Q4_30d_&amp;amp;i.+S30Q5_30d_&amp;amp;i.+S30Q6_30d_&amp;amp;i.+S30Q7_30d_&amp;amp;i.; %mend; %array(num, values = %numlist(1-30)); %do_over(num, macro=sick);&lt;/P&gt;&lt;P&gt;or with the following code&lt;/P&gt;&lt;P&gt;array sickday {30}; array S30Q4_30d{&lt;EM&gt;} S30Q4_30d_1 -- S30Q4_30d_30; array S30Q5_30d{&lt;/EM&gt;} S30Q5_30d_1--S30Q5_30d_30; array S30Q6_30d{&lt;EM&gt;} S30Q6_30d_1--S30Q6_30d_30; array S30Q7_30d{&lt;/EM&gt;} S30Q7_30d_1--S30Q7_30d_30; do i = 1 to 30; drinksday{i} = S30Q4_30d[i]+S30Q5_30d[i]+S30Q6_30d[i]+S30Q7_30d[i]; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However my problem arises in that I actually need sickday1- sickday60, but the variables sickday31 to sickday60 are coded as follows: sickday31=S30Q4_60d_1+S30Q5_60d_1+S30Q6_60d_1+S30Q7_60d_1; sickday32=S30Q4_60d_2+S30Q5_60d_2+S30Q6_60d_2+S30Q7_60d_2; etc. where the numbering of the newly created variable no longer matches the endings of the variables used to calculate it. I also think my code to create the first 30 variables could be somewhat improved. I've tried a few ways to do this but nothing is working properly.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 24 Nov 2016 16:54:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314133#M68369</guid>
      <dc:creator>rs84</dc:creator>
      <dc:date>2016-11-24T16:54:00Z</dc:date>
    </item>
    <item>
      <title>Re: how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314134#M68370</link>
      <description>&lt;P&gt;I got it to work using the following code but would really like if someone can help with something simpler, perhaps only using arrays without using the %do_over and %array macros.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro sick&amp;nbsp;(i);&lt;BR /&gt;&lt;SPAN&gt;sick&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;day&amp;amp;i. = S30Q4_30d_&amp;amp;i.+S30Q5_30d_&amp;amp;i.+S30Q6_30d_&amp;amp;i.+S30Q7_30d_&amp;amp;i.;&lt;BR /&gt;%mend;&lt;BR /&gt;%array(num, values = %numlist(1-30));&lt;BR /&gt;%do_over(num, macro= &lt;SPAN&gt;sick&lt;/SPAN&gt;);&lt;BR /&gt;%macro &lt;SPAN&gt;sick&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;2 (j, k);&lt;BR /&gt;&lt;SPAN&gt;sick&lt;/SPAN&gt;day&amp;amp;j. = S30Q4_60d_&amp;amp;k.+S30Q5_60d_&amp;amp;k.+S30Q6_60d_&amp;amp;k.+S30Q7_60d_&amp;amp;k.;&lt;BR /&gt;%mend;&lt;BR /&gt;%array(num2, values = %numlist(31-60));&lt;BR /&gt;%array(num3, values = %numlist(1-30));&lt;BR /&gt;%do_over(num2 num3, macro= &lt;SPAN&gt;sick&lt;/SPAN&gt;2);&lt;/P&gt;</description>
      <pubDate>Thu, 24 Nov 2016 17:36:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314134#M68370</guid>
      <dc:creator>rs84</dc:creator>
      <dc:date>2016-11-24T17:36:10Z</dc:date>
    </item>
    <item>
      <title>Re: how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314143#M68374</link>
      <description>&lt;P&gt;To be honest, not being able to read your code isn't helping your question at all.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Rather than dealing with all 30 vars and how many every summaries, can you simplify your problem to maybe 5 and the corresponding sums?Adding some sample data to test with would be helpful as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm 99% certain you can do this with arrays.&lt;/P&gt;</description>
      <pubDate>Thu, 24 Nov 2016 20:42:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314143#M68374</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-24T20:42:13Z</dc:date>
    </item>
    <item>
      <title>Re: how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314174#M68390</link>
      <description>&lt;P&gt;How about&amp;nbsp;a technique of listing&amp;nbsp;all the vars in one long array, then looping through the array by&amp;nbsp;appropriate step sizes?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Consider;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; array sq {*}&amp;nbsp; s30q4_30d_1-s30q4_30d_30&amp;nbsp;&amp;nbsp; s30q4_60d_1-S30q4_60d_30&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;s30q5_30d_1-s30q5_30d_30&amp;nbsp;&amp;nbsp; s30q5_60d_1-S30q5_60d_30&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s30q6_30d_1-s30q6_30d_30&amp;nbsp;&amp;nbsp; s30q6_60d_1-S30q6_60d_30&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s30q7_30d_1-s30q7_30d_30&amp;nbsp;&amp;nbsp; s30q7_60d_1-S30q7_60d_30;&amp;nbsp;&amp;nbsp; /* 4 lists of 60 vars each */&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Now get 60 sums */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; array sickdays {60} (60*0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; do S=1 to 60;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do J=S to dim(sq) by 60;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sickdays{s}=sickdays{s}+sq{j};&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You could also make array SQ into a 2-dimensional array {60*4}&amp;nbsp; then sum each column over its 4 rows, then all loops would increment by 1 as in:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; do s=1 to 60;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do r=1 to 4;&amp;nbsp; sickdays{s}=sickdays{s}+sq{s,r}; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Compact code.&amp;nbsp; No macro needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Mark&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 03:35:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314174#M68390</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-25T03:35:01Z</dc:date>
    </item>
    <item>
      <title>Re: how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314175#M68391</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31461"&gt;@mkeintz﻿&lt;/a&gt;&amp;nbsp;small typo in the variable names - second and fourth set starts with 30 rather than S30?&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 01:28:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314175#M68391</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-25T01:28:22Z</dc:date>
    </item>
    <item>
      <title>Re: how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314200#M68397</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;thank you. now corrected.&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 03:36:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314200#M68397</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-25T03:36:20Z</dc:date>
    </item>
    <item>
      <title>Re: how can i recode using array</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314880#M68637</link>
      <description>&lt;P&gt;Thank you, was very helpful. I was stuck thinking about the problem in a certain way and your solution is simple but just what I needed.&lt;/P&gt;</description>
      <pubDate>Mon, 28 Nov 2016 16:25:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-can-i-recode-using-array/m-p/314880#M68637</guid>
      <dc:creator>rs84</dc:creator>
      <dc:date>2016-11-28T16:25:58Z</dc:date>
    </item>
  </channel>
</rss>

