<?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: Altering a do loop to make unequal intervals in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812435#M320561</link>
    <description>&lt;P&gt;I tried this and incident only has 1 level (0 and missing). which is odd because there are instances where incident should be 1.&lt;/P&gt;</description>
    <pubDate>Tue, 10 May 2022 15:38:43 GMT</pubDate>
    <dc:creator>ajb</dc:creator>
    <dc:date>2022-05-10T15:38:43Z</dc:date>
    <item>
      <title>Altering a do loop to make unequal intervals</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812296#M320486</link>
      <description>&lt;P&gt;Hello All,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am using SAS 9.4.&lt;/P&gt;
&lt;P&gt;I worked with a more SAS savvy person than myself on this code and I need to make a few changes to the do loop. I am having a problem changing the %do loop in &lt;FONT color="#0000FF"&gt;blue&lt;/FONT&gt; in the following code.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to change the incident variable in %do loop.&lt;/P&gt;
&lt;P&gt;Currently, incident = 1 if an event occurs within a specific 365.25 period after visitdate.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;incident=(%eval(&amp;amp;i-&lt;STRONG&gt;1&lt;/STRONG&gt;)*&lt;STRONG&gt;365.25&lt;/STRONG&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;&amp;amp;i*&lt;STRONG&gt;365.25&lt;/STRONG&gt;); where i=1 to 10&lt;/P&gt;
&lt;P&gt;I need to change this to only do&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;incident=(0*&lt;STRONG&gt;365.25&lt;/STRONG&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;4*&lt;STRONG&gt;365.25&lt;/STRONG&gt;);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;incident=(4*&lt;STRONG&gt;365.25&lt;/STRONG&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;7*&lt;STRONG&gt;365.25&lt;/STRONG&gt;);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;incident=(7*&lt;STRONG&gt;365.25&lt;/STRONG&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;10*&lt;STRONG&gt;365.25&lt;/STRONG&gt;);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;__________________________________&lt;/P&gt;
&lt;P&gt;%let outcome=event; &amp;nbsp;&lt;FONT color="#339966"&gt;/*date variable*/&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#339966"&gt;/*transpose data set from wide to long*/&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM&gt;outcome&lt;/EM&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; data second;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set first;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array fox {*} fox1 fox2 fox3 fox4;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array rabbit {*} rabbit1 rabbit2 rabbit3 rabbit4;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array dog {*} dog1 dog2 dog3 dog4;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array date{*} date1 date2 date3 date4;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=&lt;STRONG&gt;1&lt;/STRONG&gt; to dim(fox);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; visit=i+&lt;STRONG&gt;2&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foxvar=fox(i);&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; rabbitvar=rabbit(i);&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; dogvar=dog(i);&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; visitdate=date(i);&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; if ^(&amp;amp;outcome=&lt;STRONG&gt;.&lt;/STRONG&gt;) then output;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000FF"&gt;&amp;nbsp; %do i=&lt;STRONG&gt;1&lt;/STRONG&gt; %to &lt;STRONG&gt;10&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#339966"&gt;/* INCIDENT=0 prior to the event, */&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#339966"&gt;/* 1 at the event, missing otherwise(after event occurred) */&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data second;&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; set second;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by id visit;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drop switch;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain switch;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first. id then switch=&lt;STRONG&gt;0&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if switch=&lt;STRONG&gt;1&lt;/STRONG&gt; then incident=&lt;STRONG&gt;.&lt;/STRONG&gt;;&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; if ^missing(&amp;amp;outcome) and ^missing(&amp;amp;outcome) and switch=&lt;STRONG&gt;0&lt;/STRONG&gt; then do;&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; incident=(%eval(&amp;amp;i-&lt;STRONG&gt;1&lt;/STRONG&gt;)*&lt;STRONG&gt;365.25&lt;/STRONG&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;&amp;amp;i*&lt;STRONG&gt;365.25&lt;/STRONG&gt;);&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; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if incident=&lt;STRONG&gt;1&lt;/STRONG&gt; then switch=&lt;STRONG&gt;1&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;FONT color="#0000FF"&gt;&amp;nbsp;%end;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000FF"&gt;...&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;%mend&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;%&lt;STRONG&gt;&lt;EM&gt;outcome&lt;/EM&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;There is more to the macro code as it drops the ID in the following period after it has had the event in the current interval.&amp;nbsp;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;________________________________________&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have tried without success the following 2 strategies&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000FF"&gt;&amp;nbsp; %do i=&lt;STRONG&gt;1&lt;/STRONG&gt; %to 9;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data second;&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; set second;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#339966"&gt;...&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;when i = &lt;SPAN class="s1"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt; do;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;incident=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt;*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/SPAN&gt;*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;);&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;end;&lt;/P&gt;
&lt;P class="p1"&gt;when i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/SPAN&gt; do;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="p1"&gt;incident=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/SPAN&gt;*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;7&lt;/STRONG&gt;&lt;/SPAN&gt;*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P class="p1"&gt;end;&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;when i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;7&lt;/STRONG&gt;&lt;/SPAN&gt; do;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="p1"&gt;incident=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;7&lt;/STRONG&gt;&lt;/SPAN&gt;*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;&lt;SPAN class="s1"&gt;&lt;STRONG&gt;9&lt;/STRONG&gt;&lt;/SPAN&gt;*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;);&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;end;&lt;/P&gt;
&lt;P class="p1"&gt;when i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/SPAN&gt; or i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;3&lt;/STRONG&gt;&lt;/SPAN&gt; or i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;5&lt;/STRONG&gt;&lt;/SPAN&gt; or i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;6&lt;/STRONG&gt;&lt;/SPAN&gt; or i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;8&lt;/STRONG&gt;&lt;/SPAN&gt; or i=&lt;SPAN class="s1"&gt;&lt;STRONG&gt;9&lt;/STRONG&gt;&lt;/SPAN&gt; do incident = &lt;SPAN class="s1"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/P&gt;
&lt;P class="p1"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class="p1"&gt;and also&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class="s1"&gt;%do&lt;/SPAN&gt; i={&lt;SPAN class="s2"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt;,&lt;SPAN class="s2"&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;&lt;STRONG&gt;7&lt;/STRONG&gt;&lt;/SPAN&gt;};&lt;/P&gt;
&lt;P class="p1"&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="s1"&gt;%do&lt;/SPAN&gt; j={&lt;SPAN class="s2"&gt;&lt;STRONG&gt;4&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;&lt;STRONG&gt;7&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN class="s2"&gt;&lt;STRONG&gt;9&lt;/STRONG&gt;&lt;/SPAN&gt;};&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data second;&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; set second;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;incident=&lt;SPAN class="s1"&gt;(&lt;/SPAN&gt;%eval(&amp;amp;i)*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;(&amp;amp;j)*&lt;SPAN class="s1"&gt;&lt;STRONG&gt;365.25&lt;/STRONG&gt;&lt;/SPAN&gt;);&amp;nbsp;&lt;/P&gt;
&lt;P&gt;__________&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#993366"&gt;Any help would be appreciated!!&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 10 May 2022 04:05:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812296#M320486</guid>
      <dc:creator>ajb</dc:creator>
      <dc:date>2022-05-10T04:05:12Z</dc:date>
    </item>
    <item>
      <title>Re: Altering a do loop to make unequal intervals</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812331#M320504</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%do i=1 %to 3;
/* INCIDENT=0 prior to the event, */
/* 1 at the event, missing otherwise(after event occurred) */
    data second;
      set second;
      by id visit;
      drop switch;
      retain switch;
      if first. id then switch=0;
      if switch=1 then incident=.;
      if ^missing(&amp;amp;outcome) and switch=0 then do;
        if &amp;amp;i=1 then incident=(0*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;4*365.25); 
        if &amp;amp;i=2 then incident=(4*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;7*365.25); 
        if &amp;amp;i=3 then incident=(7*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;10*365.25); 
      end;
      if incident=1 then switch=1;
    run;
  %end;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please align your code better. Tabs prevent that. Use spaces.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 May 2022 09:05:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812331#M320504</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2022-05-10T09:05:40Z</dc:date>
    </item>
    <item>
      <title>Re: Altering a do loop to make unequal intervals</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812435#M320561</link>
      <description>&lt;P&gt;I tried this and incident only has 1 level (0 and missing). which is odd because there are instances where incident should be 1.&lt;/P&gt;</description>
      <pubDate>Tue, 10 May 2022 15:38:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812435#M320561</guid>
      <dc:creator>ajb</dc:creator>
      <dc:date>2022-05-10T15:38:43Z</dc:date>
    </item>
    <item>
      <title>Re: Altering a do loop to make unequal intervals</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812456#M320565</link>
      <description>&lt;P&gt;Why are you running the same DATA step inside a macro %DO loop?&lt;/P&gt;
&lt;P&gt;What is the purpose?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Why do you want to change&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;incident=(0*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;1*365.25); 
incident=(1*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;2*365.25); 
incident=(2*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;3*365.25); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;to&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;incident=(0*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;4*365.25); 
incident=(4*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;7*365.25); 
incident=(7*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;10*365.25); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Why is the first interval 4 years and the others only 3?&lt;/STRONG&gt; Shouldn't that be:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;incident=(0*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;3*365.25); 
incident=(3*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;6*365.25); 
incident=(6*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;9*365.25); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If so then use:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;incident=(3*(&amp;amp;i-1)*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;3*&amp;amp;i*365.25); &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To implement arbitrary boundaries you could just use a list of the cut points.&amp;nbsp; Just pull the boundaries for the current iteration.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let cuts=0 4 7 10;
%do i=1 %to %sysfunc(countw(&amp;amp;cuts))-1;
....
incident=(3*%scan(&amp;amp;cuts,&amp;amp;i-1)*365.25&amp;lt;=(&amp;amp;outcome-visitdate)&amp;lt;3*%scan(&amp;amp;cuts,&amp;amp;i)*365.25); 
....
%end;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 10 May 2022 17:39:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Altering-a-do-loop-to-make-unequal-intervals/m-p/812456#M320565</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-05-10T17:39:20Z</dc:date>
    </item>
  </channel>
</rss>

