<?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: Coding logic in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701175#M214693</link>
    <description>&lt;P&gt;You don't need a macro to do this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See if this solves your problem&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data table1;
input id visits $20.;
datalines;
1 visit1
1 vsist2
1 unscheduledvisit
1 visit3
1 unscheduledvisit
2 visit1
2 vsist2
2 unscheduledvisit
2 visit3
2 unscheduledvisit
;

data want;
   set table1;
   by id;
   if first.id then visit_no = 0;
   if visits = 'unscheduledvisit' then visit_no + .1;
   else visit_no = int(visit_no) + 1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;id  visits            visit_no 
1   visit1            1.0 
1   vsist2            2.0 
1   unscheduledvisit  2.1 
1   visit3            3.0 
1   unscheduledvisit  3.1 
2   visit1            1.0 
2   vsist2            2.0 
2   unscheduledvisit  2.1 
2   visit3            3.0 
2   unscheduledvisit  3.1 &lt;/PRE&gt;</description>
    <pubDate>Tue, 24 Nov 2020 10:13:11 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2020-11-24T10:13:11Z</dc:date>
    <item>
      <title>Coding logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701172#M214692</link>
      <description>data table1;&lt;BR /&gt;input id visits .;&lt;BR /&gt;.;&lt;BR /&gt;datalines;&lt;BR /&gt;1 visit1&lt;BR /&gt;1 vsist2&lt;BR /&gt;1 unscheduledvisit&lt;BR /&gt;1 visit3&lt;BR /&gt;1 unscheduledvisit&lt;BR /&gt;2 visit1&lt;BR /&gt;2 vsist2&lt;BR /&gt;2 unscheduledvisit&lt;BR /&gt;2 visit3&lt;BR /&gt;2 unscheduledvisit&lt;BR /&gt;&lt;BR /&gt;;&lt;BR /&gt;Run&lt;BR /&gt;&lt;BR /&gt;Output data:&lt;BR /&gt;data table2&lt;BR /&gt;input id visits visit_no;&lt;BR /&gt;.;&lt;BR /&gt;datalines;&lt;BR /&gt;1 visit1. 1&lt;BR /&gt;1 vsist2. 2&lt;BR /&gt;1 unscheduledvisit. 2.1&lt;BR /&gt;1 visit3. 3&lt;BR /&gt;1 unscheduledvisit 3.1&lt;BR /&gt;2 visit1 1&lt;BR /&gt;2 vsist2 2&lt;BR /&gt;2 unscheduledvisit 2.1&lt;BR /&gt;2 visit3. 3&lt;BR /&gt;2 unscheduledvisit 3.1&lt;BR /&gt;&lt;BR /&gt;;&lt;BR /&gt;Run&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;For every unscheduled visit for everyid the visitno should be incremented by .1 of previous visit,this shud be done automatically ,every thing shud be macroticed .kindly help me..&lt;BR /&gt;</description>
      <pubDate>Tue, 24 Nov 2020 10:05:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701172#M214692</guid>
      <dc:creator>molla</dc:creator>
      <dc:date>2020-11-24T10:05:55Z</dc:date>
    </item>
    <item>
      <title>Re: Coding logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701175#M214693</link>
      <description>&lt;P&gt;You don't need a macro to do this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See if this solves your problem&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data table1;
input id visits $20.;
datalines;
1 visit1
1 vsist2
1 unscheduledvisit
1 visit3
1 unscheduledvisit
2 visit1
2 vsist2
2 unscheduledvisit
2 visit3
2 unscheduledvisit
;

data want;
   set table1;
   by id;
   if first.id then visit_no = 0;
   if visits = 'unscheduledvisit' then visit_no + .1;
   else visit_no = int(visit_no) + 1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;id  visits            visit_no 
1   visit1            1.0 
1   vsist2            2.0 
1   unscheduledvisit  2.1 
1   visit3            3.0 
1   unscheduledvisit  3.1 
2   visit1            1.0 
2   vsist2            2.0 
2   unscheduledvisit  2.1 
2   visit3            3.0 
2   unscheduledvisit  3.1 &lt;/PRE&gt;</description>
      <pubDate>Tue, 24 Nov 2020 10:13:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701175#M214693</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-11-24T10:13:11Z</dc:date>
    </item>
    <item>
      <title>Re: Coding logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701181#M214694</link>
      <description>&lt;P&gt;I'd recommend involving the ROUND function in the incrementation (even though this might require a RETAIN statement). Otherwise the non-integer visit numbers are prone to rounding errors as soon as there are two or more unscheduled visits in a row. For example,&amp;nbsp;&lt;FONT face="courier new,courier"&gt;1+.1+.1 ne 1.2&lt;/FONT&gt;&amp;nbsp;(in SAS under Windows).&lt;/P&gt;</description>
      <pubDate>Tue, 24 Nov 2020 11:00:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-logic/m-p/701181#M214694</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2020-11-24T11:00:14Z</dc:date>
    </item>
  </channel>
</rss>

