<?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: Row counting in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619463#M181876</link>
    <description>&lt;P&gt;Anytime &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 23 Jan 2020 11:40:08 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2020-01-23T11:40:08Z</dc:date>
    <item>
      <title>Row counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619452#M181867</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a very large dataset (ID's with a row status each month) that I need to translate into an ID level dataset that provides when the status changed, starting from 0.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Large dataset:&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;ID&lt;/TD&gt;&lt;TD&gt;status&lt;/TD&gt;&lt;TD&gt;Month&lt;/TD&gt;&lt;TD&gt;Country&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Mar-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Apr-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;May-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;Jun-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;N&lt;/TD&gt;&lt;TD&gt;Jul-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Sco&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Mar-06&lt;/TD&gt;&lt;TD&gt;Sco&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Apr-06&lt;/TD&gt;&lt;TD&gt;Sco&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;May-06&lt;/TD&gt;&lt;TD&gt;Sco&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;Jun-06&lt;/TD&gt;&lt;TD&gt;Sco&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Mar-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Apr-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;May-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;Jun-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;L&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;Mar-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;Apr-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;N&lt;/TD&gt;&lt;TD&gt;May-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I need to get to:&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;ID&lt;/TD&gt;&lt;TD&gt;Month&lt;/TD&gt;&lt;TD&gt;Country&lt;/TD&gt;&lt;TD&gt;Status_E&lt;/TD&gt;&lt;TD&gt;Status_N&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Sco&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Wal&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;Feb-06&lt;/TD&gt;&lt;TD&gt;Eng&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So for ID 1, a status of E was observed 4 rows down from the starting value (always L) and a status of N was observed 5 values down.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For ID 4, a status of E was observed 1 row down from starting value (always L) and a status of N was not observed in the history so is blank.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I also need to retain the first month as well as the country (static).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What is the most efficient way for me to get to this single ID level dataset with the additional variables?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jan 2020 10:38:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619452#M181867</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-01-23T10:38:17Z</dc:date>
    </item>
    <item>
      <title>Re: Row counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619454#M181869</link>
      <description>&lt;P&gt;This should be fairly efficient. Though, I don't understand why&amp;nbsp;&lt;SPAN&gt;Status_E=3 in obs=3?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID status $ Month:monyy6. Country $;
format Month monyy6.;
datalines;
1 L Feb-06 Eng
1 L Mar-06 Eng
1 L Apr-06 Eng
1 L May-06 Eng
1 E Jun-06 Eng
1 N Jul-06 Eng
2 L Feb-06 Sco
2 L Mar-06 Sco
2 L Apr-06 Sco
2 L May-06 Sco
2 E Jun-06 Sco
3 L Feb-06 Wal
3 L Mar-06 Wal
3 L Apr-06 Wal
4 L May-06 Wal
4 E Jun-06 Wal
5 L Feb-06 Eng
5 E Mar-06 Eng
5 E Apr-06 Eng
5 N May-06 Eng
;

data want(drop=_: status);
    do _N_=0 by 1 until (last.id);
        set have;
        by id;
        if first.id then do;
            _Month   = Month;
            _Country = Country;
        end;
        if status='E' &amp;amp; Status_E=. then Status_E=_N_;
        if status='N' &amp;amp; Status_N=. then Status_N=_N_;
    end;

    Month   = _Month;
    Country = _Country;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 23 Jan 2020 10:46:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619454#M181869</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-01-23T10:46:51Z</dc:date>
    </item>
    <item>
      <title>Re: Row counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619456#M181871</link>
      <description>&lt;P&gt;Beautiful example of DoW-loop use!&lt;/P&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jan 2020 10:54:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619456#M181871</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-01-23T10:54:03Z</dc:date>
    </item>
    <item>
      <title>Re: Row counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619462#M181875</link>
      <description>&lt;P&gt;This is a great example, thanks!&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jan 2020 11:38:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619462#M181875</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2020-01-23T11:38:33Z</dc:date>
    </item>
    <item>
      <title>Re: Row counting</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619463#M181876</link>
      <description>&lt;P&gt;Anytime &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jan 2020 11:40:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Row-counting/m-p/619463#M181876</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-01-23T11:40:08Z</dc:date>
    </item>
  </channel>
</rss>

