<?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: Simple Increment with Condition in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622367#M183075</link>
    <description>&lt;P&gt;This code is wrong, you can not do macro variable manipulation inside a data step do loop using %let.&lt;BR /&gt;&lt;BR /&gt;The example you provided is not clear.&lt;BR /&gt;&lt;BR /&gt;Are you asking to mark the flag variable Inc_by_5 to 1 when date =21963 + (a multiple of 5)?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If that is the case this is the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input sas_date;
cards;
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964
21965
21966
21967
21968
21969
21970
21971
21972
21973
21974
21975
;
run;

data want;
set have;
if sas_date-21963 ge 0 and  mod((sas_date-21963),5)=0 then Inc_by_5=1;
else Inc_by_5=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Please let us know if this worked for you.&lt;/P&gt;</description>
    <pubDate>Wed, 05 Feb 2020 07:07:30 GMT</pubDate>
    <dc:creator>Satish_Parida</dc:creator>
    <dc:date>2020-02-05T07:07:30Z</dc:date>
    <item>
      <title>Simple Increment with Condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622361#M183071</link>
      <description>&lt;P&gt;Hi Sas Users,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am after some assistance to help with a problem I have with incrementing after a certain condition.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is my data.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sas_Date = is a sas_date in numeric&lt;/P&gt;&lt;P&gt;Inc_by_5 = an integer.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have a list of SAS dates. I want to flag every observation that is 5 more than the condition.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The condition is to start at date 21963 and then Add 5,10,15...etc until EOF to this date and put a "1" in Inc_by_5 variable.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Have:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;sas_date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21955&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21956&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21957&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21958&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21959&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21960&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21961&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21962&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21963&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21964&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21965&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21966&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21968&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21969&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21970&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21971&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21972&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21973&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21974&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;21975&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;etc...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Want:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;sas_date&lt;/TD&gt;&lt;TD&gt;Inc_by_5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21955&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21956&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21957&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21958&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21959&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21960&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21961&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21962&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21963&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21964&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21965&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21966&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21967&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21968&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21969&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21970&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21971&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21972&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21973&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21974&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21975&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;etc...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Code so far.... but I think I need a macro....?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let j=0;
data Want;
set Have;

if date = 21963 + (5*&amp;amp;j) then do;
Inc_by_5=1;
end;
else do;
Inc_by_5=0;
%let j = %eval(&amp;amp;j+1);
end;

run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help would be greatly appreciated.&lt;/P&gt;</description>
      <pubDate>Wed, 05 Feb 2020 06:26:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622361#M183071</guid>
      <dc:creator>Go210</dc:creator>
      <dc:date>2020-02-05T06:26:05Z</dc:date>
    </item>
    <item>
      <title>Re: Simple Increment with Condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622367#M183075</link>
      <description>&lt;P&gt;This code is wrong, you can not do macro variable manipulation inside a data step do loop using %let.&lt;BR /&gt;&lt;BR /&gt;The example you provided is not clear.&lt;BR /&gt;&lt;BR /&gt;Are you asking to mark the flag variable Inc_by_5 to 1 when date =21963 + (a multiple of 5)?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If that is the case this is the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input sas_date;
cards;
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964
21965
21966
21967
21968
21969
21970
21971
21972
21973
21974
21975
;
run;

data want;
set have;
if sas_date-21963 ge 0 and  mod((sas_date-21963),5)=0 then Inc_by_5=1;
else Inc_by_5=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Please let us know if this worked for you.&lt;/P&gt;</description>
      <pubDate>Wed, 05 Feb 2020 07:07:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622367#M183075</guid>
      <dc:creator>Satish_Parida</dc:creator>
      <dc:date>2020-02-05T07:07:30Z</dc:date>
    </item>
    <item>
      <title>Re: Simple Increment with Condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622368#M183076</link>
      <description>&lt;P&gt;I fully agree to &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138619"&gt;@Satish_Parida&lt;/a&gt; : "The example you provided is not clear." And, of course, you don't need macro-variables, just use retain-statement to prevent j from being reset.&lt;/P&gt;
&lt;P&gt;Untested:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data Want;
  set Have;
  
  retain j 0;

  if date = 21963 + (5*j) then do;
    Inc_by_5=1;
  end;
  else do;
   Inc_by_5=0;
   j = j + 1;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 05 Feb 2020 07:09:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622368#M183076</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2020-02-05T07:09:09Z</dc:date>
    </item>
    <item>
      <title>Re: Simple Increment with Condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622371#M183077</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input sas_date;
cards;
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964
21965
21966
21967
21968
21969
21970
21971
21972
21973
21974
21975
;
%let date=21963;
data want;
 set have;
 retain flag 0 n -1;
 if sas_date=&amp;amp;date then flag=1;
 if flag then n+1;
 Inc_by_5=ifn(mod(n,5)=0,1,0) ;
drop n flag;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 05 Feb 2020 07:16:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Simple-Increment-with-Condition/m-p/622371#M183077</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2020-02-05T07:16:22Z</dc:date>
    </item>
  </channel>
</rss>

