<?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 Update indexing variable in the do loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565919#M158955</link>
    <description>&lt;P&gt;Hi SAS Users,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have been trying to resolve this problem, but keep failing, therefore I would greatly appreciate any help.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The data are binomial (whether a&amp;nbsp; participant has a condition (1) or not(0)). There are 20 repeated measurements corresponding to 20 visits:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cond1 cond2 .... cond20&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp;...&amp;nbsp; &amp;nbsp;0&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;1 ...&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp;0 .... 0&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp; 0&amp;nbsp; ... 1&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;etc.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to create 20 variables based on cond1-cond20, so that if a person had a condition at visit 1 all visits after it would be marked as 1; if condition was present at visit 2, all visits after the second would be marked as 1, etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cond_new1 cond_new2 cond_new 3 .... cond_new20&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; 0 ... 0&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;1&amp;nbsp; 1... 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp; 1&amp;nbsp; 1...&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;0&amp;nbsp; 0&amp;nbsp; 0 ... 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My current code is:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data interim;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;set old;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;array old_cond(20) cond1 - cond20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;array new_cond(20) new_cond1 - new_cond20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; do i = 1 to 20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; new_cond(i) = old_cond(i);&lt;BR /&gt;end; drop i;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;array old_cond(19) cond1 - cond19;&lt;BR /&gt;array new_cond(20) new_cond1 - new_cond20;&lt;BR /&gt;do i = 1 to 19;&lt;BR /&gt;do j = 1 to 19;&lt;BR /&gt;if old_cond(i) = 1 then new_aids(i+j) = 1;&lt;BR /&gt;end; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the error message says that the array subscript is out of range.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I cannot find in any SAS resources how to update an indexing variable so that it moved from say visit 2 to visit 20 and changed the value from 0 to 1 until it reaches the last visit. I would be really grateful for any help.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 13 Jun 2019 16:40:26 GMT</pubDate>
    <dc:creator>Dinurik</dc:creator>
    <dc:date>2019-06-13T16:40:26Z</dc:date>
    <item>
      <title>Update indexing variable in the do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565919#M158955</link>
      <description>&lt;P&gt;Hi SAS Users,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have been trying to resolve this problem, but keep failing, therefore I would greatly appreciate any help.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The data are binomial (whether a&amp;nbsp; participant has a condition (1) or not(0)). There are 20 repeated measurements corresponding to 20 visits:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cond1 cond2 .... cond20&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp;...&amp;nbsp; &amp;nbsp;0&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;1 ...&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp;0 .... 0&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp; 0&amp;nbsp; ... 1&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;etc.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to create 20 variables based on cond1-cond20, so that if a person had a condition at visit 1 all visits after it would be marked as 1; if condition was present at visit 2, all visits after the second would be marked as 1, etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;cond_new1 cond_new2 cond_new 3 .... cond_new20&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; 0 ... 0&lt;/P&gt;&lt;P&gt;0&amp;nbsp; &amp;nbsp;1&amp;nbsp; 1... 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp; 1&amp;nbsp; 1...&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;0&amp;nbsp; 0&amp;nbsp; 0 ... 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My current code is:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data interim;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;set old;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;array old_cond(20) cond1 - cond20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;array new_cond(20) new_cond1 - new_cond20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; do i = 1 to 20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; new_cond(i) = old_cond(i);&lt;BR /&gt;end; drop i;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;array old_cond(19) cond1 - cond19;&lt;BR /&gt;array new_cond(20) new_cond1 - new_cond20;&lt;BR /&gt;do i = 1 to 19;&lt;BR /&gt;do j = 1 to 19;&lt;BR /&gt;if old_cond(i) = 1 then new_aids(i+j) = 1;&lt;BR /&gt;end; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And the error message says that the array subscript is out of range.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I cannot find in any SAS resources how to update an indexing variable so that it moved from say visit 2 to visit 20 and changed the value from 0 to 1 until it reaches the last visit. I would be really grateful for any help.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jun 2019 16:40:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565919#M158955</guid>
      <dc:creator>Dinurik</dc:creator>
      <dc:date>2019-06-13T16:40:26Z</dc:date>
    </item>
    <item>
      <title>Re: Update indexing variable in the do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565920#M158956</link>
      <description>&lt;P&gt;If i=18 and j=18 then you have a subscript of i+j which is 36, which is out of range.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since you didn't actually provide data, this is UNTESTED code&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
array cond(20) cond1 - cond20;

do i = 2 to 20;
    if cond(i-1)=1 then cond(i)=1;
end;
drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jun 2019 16:48:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565920#M158956</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-06-13T16:48:23Z</dc:date>
    </item>
    <item>
      <title>Re: Update indexing variable in the do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565926#M158961</link>
      <description>&lt;P&gt;Way too complicated, this will change in place with your old variables. If you don't want that you could create a new array of all values easily.&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 have;

array cond(20);

index = whichn(1, of cond(*));

do i=index to dim(cond);
cond(i) = 1;
end;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/267481"&gt;@Dinurik&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi SAS Users,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have been trying to resolve this problem, but keep failing, therefore I would greatly appreciate any help.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The data are binomial (whether a&amp;nbsp; participant has a condition (1) or not(0)). There are 20 repeated measurements corresponding to 20 visits:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;cond1 cond2 .... cond20&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; &amp;nbsp;...&amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; &amp;nbsp;1 ...&amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; &amp;nbsp;0 .... 0&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; &amp;nbsp; 0&amp;nbsp; ... 1&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;etc.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need to create 20 variables based on cond1-cond20, so that if a person had a condition at visit 1 all visits after it would be marked as 1; if condition was present at visit 2, all visits after the second would be marked as 1, etc.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;cond_new1 cond_new2 cond_new 3 .... cond_new20&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; &amp;nbsp;0&amp;nbsp; 0 ... 0&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; &amp;nbsp;1&amp;nbsp; 1... 1&lt;/P&gt;
&lt;P&gt;1&amp;nbsp; 1&amp;nbsp; 1...&amp;nbsp; 1&lt;/P&gt;
&lt;P&gt;0&amp;nbsp; 0&amp;nbsp; 0 ... 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My current code is:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data interim;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;set old;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;array old_cond(20) cond1 - cond20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;array new_cond(20) new_cond1 - new_cond20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; do i = 1 to 20;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; new_cond(i) = old_cond(i);&lt;BR /&gt;end; drop i;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;array old_cond(19) cond1 - cond19;&lt;BR /&gt;array new_cond(20) new_cond1 - new_cond20;&lt;BR /&gt;do i = 1 to 19;&lt;BR /&gt;do j = 1 to 19;&lt;BR /&gt;if old_cond(i) = 1 then new_aids(i+j) = 1;&lt;BR /&gt;end; end;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And the error message says that the array subscript is out of range.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I cannot find in any SAS resources how to update an indexing variable so that it moved from say visit 2 to visit 20 and changed the value from 0 to 1 until it reaches the last visit. I would be really grateful for any help.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jun 2019 16:51:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565926#M158961</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2019-06-13T16:51:20Z</dc:date>
    </item>
    <item>
      <title>Re: Update indexing variable in the do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565930#M158964</link>
      <description>&lt;P&gt;Thank you, PaigeMiller! I tried it on my data and it worked.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jun 2019 17:01:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565930#M158964</guid>
      <dc:creator>Dinurik</dc:creator>
      <dc:date>2019-06-13T17:01:29Z</dc:date>
    </item>
    <item>
      <title>Re: Update indexing variable in the do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565935#M158967</link>
      <description>&lt;P&gt;I tried it on my data and it didn't work. SAS says:&amp;nbsp; Array subscript out of range at line "cond(i) = 1;"&lt;/P&gt;</description>
      <pubDate>Thu, 13 Jun 2019 17:11:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565935#M158967</guid>
      <dc:creator>Dinurik</dc:creator>
      <dc:date>2019-06-13T17:11:24Z</dc:date>
    </item>
    <item>
      <title>Re: Update indexing variable in the do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565944#M158973</link>
      <description>Is it possible to not have a 1 in any row? Otherwise that should work given your problem statement. You can add an IF condition to enter the loop only if the index is between 1 and 20.</description>
      <pubDate>Thu, 13 Jun 2019 17:19:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Update-indexing-variable-in-the-do-loop/m-p/565944#M158973</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2019-06-13T17:19:12Z</dc:date>
    </item>
  </channel>
</rss>

