<?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: Select first and last event in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716971#M221674</link>
    <description>&lt;P&gt;ID 2 has a sequence of 2, 3, 4.&amp;nbsp; So why does it have start level 3 and end level 2?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Assuming that is an error, then here's a technique to pass through each id twice.&amp;nbsp; The first pass determines the start and end levels.&amp;nbsp; the second pass re-reads the id and outputs each obs with the recently determined start and end levels:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have (in=firstpass)  have (in=secondpass);
  by id;
  retain start_level end_level;
  if first.id then start_level=level;
  if in=firstpass then end_level=level;
  if secondpass;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The by statement create the dummy variables first.id and last.id, providing a way to know when an ID is beginning or ending.&amp;nbsp; So when FIRST.ID is true, then you have start_level.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since the HAVE dataset is specified twice in the SET statement, the presence of the BY ID statement causes the data to be interleaved - i.e. each id is completely read twice&amp;nbsp; &lt;EM&gt;&lt;STRONG&gt;before progressing to the next id.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The retain tells SAS not to reset the variables to missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And the "if in=firstpass" keeps update the end_level as long as your are on the first pass.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, there is a subsetting if:&amp;nbsp; "if secondpass;"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;The firstpass dummy is tested&lt;/STRIKE&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 05 Feb 2021 05:48:37 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2021-02-05T05:48:37Z</dc:date>
    <item>
      <title>Select first and last event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716943#M221661</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Edited:&lt;/U&gt;&lt;/STRONG&gt; Changed the required output data for id 2, which had the wrong start and end levels.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hi all,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My company has a system of levels for probationary recruits that everyone has to pass through by completing certain tasks. They are usually given a period of 4 months to go through each level. If somebody has some relevant experience, they can start at a higher level. They are also allowed to change up the sequence in which they go through the levels, meaning they can are allowed to do a higher level task and then come back and finish the rest. If the person moves to another department, they repeat this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The data looks as follows:&lt;/P&gt;
&lt;TABLE width="483"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="31"&gt;id&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="87"&gt;&amp;nbsp;Month/Year&amp;nbsp;&lt;/TD&gt;
&lt;TD width="117"&gt;Start Month/Year&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;End Month/Year&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;Dept.&lt;/TD&gt;
&lt;TD width="73"&gt;&amp;nbsp;&amp;nbsp; Level&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;May-17&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Jan-18&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Finance&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Jun-19&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Finance&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Finance&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Jan-19&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;May-19&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Aug-20&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Nov-20&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need to add two columns that give me the start and end levels each person took by dept. So, what I need is as below:&lt;/P&gt;
&lt;TABLE width="535"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;id&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="87"&gt;&amp;nbsp;Month/Year&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;Start Month/Year&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;End Month/Year&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;Dept.&lt;/TD&gt;
&lt;TD width="64"&gt;&amp;nbsp;&amp;nbsp; Level&lt;/TD&gt;
&lt;TD width="64"&gt;Start level&amp;nbsp;&lt;/TD&gt;
&lt;TD width="64"&gt;End level&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;May-17&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Jan-18&lt;/TD&gt;
&lt;TD&gt;Jan-17&lt;/TD&gt;
&lt;TD&gt;Sep-17&lt;/TD&gt;
&lt;TD&gt;Acct.&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Finance&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Jun-19&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Finance&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Feb-19&lt;/TD&gt;
&lt;TD&gt;Oct-19&lt;/TD&gt;
&lt;TD&gt;Finance&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Jan-19&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;May-19&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;Sep-18&lt;/TD&gt;
&lt;TD&gt;Sep-19&lt;/TD&gt;
&lt;TD&gt;HR&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Aug-20&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Nov-20&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;Apr-20&lt;/TD&gt;
&lt;TD&gt;Mar-21&lt;/TD&gt;
&lt;TD&gt;SCM&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I would appreciate it if someone could please help me with this. Thank you in advance for all the help.&lt;/P&gt;</description>
      <pubDate>Sun, 07 Feb 2021 03:22:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716943#M221661</guid>
      <dc:creator>PDevi</dc:creator>
      <dc:date>2021-02-07T03:22:26Z</dc:date>
    </item>
    <item>
      <title>Re: Select first and last event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716970#M221673</link>
      <description>&lt;P&gt;Do something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ MonthYear $ StartMonthYear $ EndMonthYear $ Dept $ Level;
datalines;
1 Jan-17 Jan-17 Sep-17 Acct.   1
1 May-17 Jan-17 Sep-17 Acct.   2
1 Sep-17 Jan-17 Sep-17 Acct.   3
1 Jan-18 Jan-17 Sep-17 Acct.   4
2 Feb-19 Feb-19 Oct-19 Finance 2
2 Jun-19 Feb-19 Oct-19 Finance 3
2 Oct-19 Feb-19 Oct-19 Finance 4
3 Sep-18 Sep-18 Sep-19 HR      1
3 Jan-19 Sep-18 Sep-19 HR      2
3 May-19 Sep-18 Sep-19 HR      4
3 Sep-19 Sep-18 Sep-19 HR      3
1 Apr-20 Apr-20 Mar-21 SCM     1
1 Aug-20 Apr-20 Mar-21 SCM     2
1 Nov-20 Apr-20 Mar-21 SCM     3
1 Mar-21 Apr-20 Mar-21 SCM     4
;

data want;
   do _N_ = 1 by 1 until (last.id);
      set have;
      by id notsorted;
      if _N_ = 1 then start = Level;
   end;

   end = Level;

   do _N_ = 1 to _N_;
      set have;
      output;
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 05 Feb 2021 05:44:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716970#M221673</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-02-05T05:44:30Z</dc:date>
    </item>
    <item>
      <title>Re: Select first and last event</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716971#M221674</link>
      <description>&lt;P&gt;ID 2 has a sequence of 2, 3, 4.&amp;nbsp; So why does it have start level 3 and end level 2?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Assuming that is an error, then here's a technique to pass through each id twice.&amp;nbsp; The first pass determines the start and end levels.&amp;nbsp; the second pass re-reads the id and outputs each obs with the recently determined start and end levels:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have (in=firstpass)  have (in=secondpass);
  by id;
  retain start_level end_level;
  if first.id then start_level=level;
  if in=firstpass then end_level=level;
  if secondpass;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The by statement create the dummy variables first.id and last.id, providing a way to know when an ID is beginning or ending.&amp;nbsp; So when FIRST.ID is true, then you have start_level.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since the HAVE dataset is specified twice in the SET statement, the presence of the BY ID statement causes the data to be interleaved - i.e. each id is completely read twice&amp;nbsp; &lt;EM&gt;&lt;STRONG&gt;before progressing to the next id.&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The retain tells SAS not to reset the variables to missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And the "if in=firstpass" keeps update the end_level as long as your are on the first pass.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, there is a subsetting if:&amp;nbsp; "if secondpass;"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;The firstpass dummy is tested&lt;/STRIKE&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2021 05:48:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Select-first-and-last-event/m-p/716971#M221674</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-02-05T05:48:37Z</dc:date>
    </item>
  </channel>
</rss>

