<?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: How to find first N and last N obs with By variable? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215369#M307553</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;LAST.MON same as FIRST.MON .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 02 Apr 2015 19:46:23 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2015-04-02T19:46:23Z</dc:date>
    <item>
      <title>How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215368#M307552</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a problem to find first n and last n obs for each month. I figured out how to find first n obs. Could anybody have an efficient way to get last n obs based on each month?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The below is the code for the question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;length MOn $ 7 ;&lt;/P&gt;&lt;P&gt;informat opendate yymmdd10. ;&lt;/P&gt;&lt;P&gt;format opendate yymmdd10.;&lt;/P&gt;&lt;P&gt;input Mon Opendate acctNum;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;2014-01 2014-01-02 2384&lt;/P&gt;&lt;P&gt;2014-01 2014-01-02 4723&lt;/P&gt;&lt;P&gt;2014-01 2014-01-02 5954&lt;/P&gt;&lt;P&gt;2014-01 2014-01-06 2947&lt;/P&gt;&lt;P&gt;2014-01 2014-01-06 4349&lt;/P&gt;&lt;P&gt;2014-01 2014-01-06 4478&lt;/P&gt;&lt;P&gt;2014-01 2014-01-09 6139&lt;/P&gt;&lt;P&gt;2014-01 2014-01-09 7655&lt;/P&gt;&lt;P&gt;2014-01 2014-01-27 2065&lt;/P&gt;&lt;P&gt;2014-01 2014-01-28 7038&lt;/P&gt;&lt;P&gt;2014-02 2014-02-06 3120&lt;/P&gt;&lt;P&gt;2014-02 2014-02-07 2864&lt;/P&gt;&lt;P&gt;2014-02 2014-02-10 1409&lt;/P&gt;&lt;P&gt;2014-02 2014-02-11 0456&lt;/P&gt;&lt;P&gt;2014-02 2014-02-11 2704&lt;/P&gt;&lt;P&gt;2014-02 2014-02-11 5842&lt;/P&gt;&lt;P&gt;2014-02 2014-02-18 0934&lt;/P&gt;&lt;P&gt;2014-02 2014-02-18 7630&lt;/P&gt;&lt;P&gt;2014-02 2014-02-27 3931&lt;/P&gt;&lt;P&gt;2014-03 2014-03-04 4751&lt;/P&gt;&lt;P&gt;2014-03 2014-03-04 8732&lt;/P&gt;&lt;P&gt;2014-03 2014-03-13 4792&lt;/P&gt;&lt;P&gt;2014-03 2014-03-17 8868&lt;/P&gt;&lt;P&gt;2014-03 2014-03-25 8168&lt;/P&gt;&lt;P&gt;2014-04 2014-04-08 6910&lt;/P&gt;&lt;P&gt;2014-04 2014-04-09 4496&lt;/P&gt;&lt;P&gt;2014-04 2014-04-15 3525&lt;/P&gt;&lt;P&gt;2014-04 2014-04-17 6023&lt;/P&gt;&lt;P&gt;2014-04 2014-04-18 7453&lt;/P&gt;&lt;P&gt;2014-04 2014-04-23 3930&lt;/P&gt;&lt;P&gt;2014-04 2014-04-24 4925&lt;/P&gt;&lt;P&gt;2014-04 2014-04-28 3405&lt;/P&gt;&lt;P&gt;2014-04 2014-04-28 4038&lt;/P&gt;&lt;P&gt;2014-04 2014-04-28 8540&lt;/P&gt;&lt;P&gt;2014-04 2014-04-29 3964&lt;/P&gt;&lt;P&gt;2014-04 2014-04-30 2561&lt;/P&gt;&lt;P&gt;2014-04 2014-04-30 8133&lt;/P&gt;&lt;P&gt;2014-05 2014-05-05 6331&lt;/P&gt;&lt;P&gt;2014-05 2014-05-05 9796&lt;/P&gt;&lt;P&gt;2014-05 2014-05-09 5393&lt;/P&gt;&lt;P&gt;2014-05 2014-05-12 2715&lt;/P&gt;&lt;P&gt;2014-05 2014-05-19 0007&lt;/P&gt;&lt;P&gt;2014-05 2014-05-19 2741&lt;/P&gt;&lt;P&gt;2014-05 2014-05-19 5780&lt;/P&gt;&lt;P&gt;2014-05 2014-05-21 1717&lt;/P&gt;&lt;P&gt;2014-05 2014-05-21 5595&lt;/P&gt;&lt;P&gt;2014-05 2014-05-21 7656&lt;/P&gt;&lt;P&gt;2014-05 2014-05-28 1779&lt;/P&gt;&lt;P&gt;2014-05 2014-05-30 2382&lt;/P&gt;&lt;P&gt;2014-05 2014-05-30 5113&lt;/P&gt;&lt;P&gt;2014-05 2014-05-30 9139&lt;/P&gt;&lt;P&gt;2014-06 2014-06-12 2133&lt;/P&gt;&lt;P&gt;2014-06 2014-06-13 4578&lt;/P&gt;&lt;P&gt;2014-06 2014-06-16 7189&lt;/P&gt;&lt;P&gt;2014-06 2014-06-18 3996&lt;/P&gt;&lt;P&gt;2014-06 2014-06-23 7799&lt;/P&gt;&lt;P&gt;2014-06 2014-06-24 9880&lt;/P&gt;&lt;P&gt;2014-06 2014-06-30 8321&lt;/P&gt;&lt;P&gt;2014-07 2014-07-01 1332&lt;/P&gt;&lt;P&gt;2014-07 2014-07-08 4770&lt;/P&gt;&lt;P&gt;2014-07 2014-07-09 0097&lt;/P&gt;&lt;P&gt;2014-07 2014-07-10 7365&lt;/P&gt;&lt;P&gt;2014-07 2014-07-15 5766&lt;/P&gt;&lt;P&gt;2014-07 2014-07-15 8149&lt;/P&gt;&lt;P&gt;2014-07 2014-07-17 8945&lt;/P&gt;&lt;P&gt;2014-07 2014-07-18 9757&lt;/P&gt;&lt;P&gt;2014-07 2014-07-21 4171&lt;/P&gt;&lt;P&gt;2014-07 2014-07-21 4569&lt;/P&gt;&lt;P&gt;2014-07 2014-07-22 8733&lt;/P&gt;&lt;P&gt;2014-07 2014-07-23 9421&lt;/P&gt;&lt;P&gt;2014-07 2014-07-24 6270&lt;/P&gt;&lt;P&gt;2014-07 2014-07-30 6779&lt;/P&gt;&lt;P&gt;2014-08 2014-08-01 4313&lt;/P&gt;&lt;P&gt;2014-08 2014-08-05 6366&lt;/P&gt;&lt;P&gt;2014-08 2014-08-08 7315&lt;/P&gt;&lt;P&gt;2014-08 2014-08-11 7244&lt;/P&gt;&lt;P&gt;2014-08 2014-08-11 8788&lt;/P&gt;&lt;P&gt;2014-08 2014-08-12 2978&lt;/P&gt;&lt;P&gt;2014-08 2014-08-13 0967&lt;/P&gt;&lt;P&gt;2014-08 2014-08-13 4598&lt;/P&gt;&lt;P&gt;2014-08 2014-08-14 1587&lt;/P&gt;&lt;P&gt;2014-08 2014-08-14 6579&lt;/P&gt;&lt;P&gt;2014-08 2014-08-14 9235&lt;/P&gt;&lt;P&gt;2014-08 2014-08-19 6960&lt;/P&gt;&lt;P&gt;2014-08 2014-08-19 7424&lt;/P&gt;&lt;P&gt;2014-08 2014-08-21 4643&lt;/P&gt;&lt;P&gt;2014-08 2014-08-22 8183&lt;/P&gt;&lt;P&gt;2014-08 2014-08-25 6993&lt;/P&gt;&lt;P&gt;2014-08 2014-08-26 5970&lt;/P&gt;&lt;P&gt;2014-08 2014-08-26 7337&lt;/P&gt;&lt;P&gt;2014-08 2014-08-28 1918&lt;/P&gt;&lt;P&gt;2014-08 2014-08-28 2548&lt;/P&gt;&lt;P&gt;2014-08 2014-08-28 9709&lt;/P&gt;&lt;P&gt;2014-08 2014-08-28 9821&lt;/P&gt;&lt;P&gt;2014-09 2014-09-01 0401&lt;/P&gt;&lt;P&gt;2014-09 2014-09-03 5498&lt;/P&gt;&lt;P&gt;2014-09 2014-09-04 4562&lt;/P&gt;&lt;P&gt;2014-09 2014-09-08 3869&lt;/P&gt;&lt;P&gt;2014-09 2014-09-11 3966&lt;/P&gt;&lt;P&gt;2014-09 2014-09-11 5163&lt;/P&gt;&lt;P&gt;2014-09 2014-09-15 3879&lt;/P&gt;&lt;P&gt;2014-09 2014-09-15 6084&lt;/P&gt;&lt;P&gt;2014-09 2014-09-16 6347&lt;/P&gt;&lt;P&gt;2014-09 2014-09-18 7511&lt;/P&gt;&lt;P&gt;2014-09 2014-09-22 6510&lt;/P&gt;&lt;P&gt;2014-09 2014-09-29 2145&lt;/P&gt;&lt;P&gt;2014-09 2014-09-30 3317&lt;/P&gt;&lt;P&gt;2014-10 2014-10-01 4439&lt;/P&gt;&lt;P&gt;2014-10 2014-10-03 4036&lt;/P&gt;&lt;P&gt;2014-10 2014-10-08 4278&lt;/P&gt;&lt;P&gt;2014-10 2014-10-17 6996&lt;/P&gt;&lt;P&gt;2014-10 2014-10-28 1506&lt;/P&gt;&lt;P&gt;2014-11 2014-11-06 4125&lt;/P&gt;&lt;P&gt;2014-11 2014-11-07 5094&lt;/P&gt;&lt;P&gt;2014-11 2014-11-13 5534&lt;/P&gt;&lt;P&gt;2014-11 2014-11-17 4154&lt;/P&gt;&lt;P&gt;2014-11 2014-11-18 8332&lt;/P&gt;&lt;P&gt;2014-11 2014-11-18 9681&lt;/P&gt;&lt;P&gt;2014-11 2014-11-21 5800&lt;/P&gt;&lt;P&gt;2014-11 2014-11-24 0591&lt;/P&gt;&lt;P&gt;2014-11 2014-11-24 9726&lt;/P&gt;&lt;P&gt;2014-12 2014-12-01 9144&lt;/P&gt;&lt;P&gt;2014-12 2014-12-03 4830&lt;/P&gt;&lt;P&gt;2014-12 2014-12-03 7171&lt;/P&gt;&lt;P&gt;2014-12 2014-12-04 7629&lt;/P&gt;&lt;P&gt;2014-12 2014-12-12 0703&lt;/P&gt;&lt;P&gt;2014-12 2014-12-15 3130&lt;/P&gt;&lt;P&gt;2014-12 2014-12-29 0229&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=have out=have_s; by Opendate acctNum; run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;set have_s;&lt;/P&gt;&lt;P&gt;count+1;&lt;/P&gt;&lt;P&gt;by Mon;&lt;/P&gt;&lt;P&gt;if first.mon then count=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;** to find first 2 obs for each month **;&lt;/P&gt;&lt;P&gt;data first2obs (drop=count);&lt;/P&gt;&lt;P&gt;set want;&lt;/P&gt;&lt;P&gt;if count le 2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 19:35:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215368#M307552</guid>
      <dc:creator>QLi</dc:creator>
      <dc:date>2015-04-02T19:35:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215369#M307553</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;LAST.MON same as FIRST.MON .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 19:46:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215369#M307553</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2015-04-02T19:46:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215370#M307554</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;nbsp; I tried Last.mon and can't get what i want. Could you give some detail?&amp;nbsp; Thanks,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 19:57:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215370#M307554</guid>
      <dc:creator>QLi</dc:creator>
      <dc:date>2015-04-02T19:57:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215371#M307555</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You'll need to provide some example of what you actually want and the rules around it. An example of the input and the expected output will help. If it involves specific accounts you likely need to sort the data differently, possibly by account then mon.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 20:03:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215371#M307555</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2015-04-02T20:03:25Z</dc:date>
    </item>
    <item>
      <title>Re: How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215372#M307556</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You will need to read the data twice ... once to find the total number of records in a month and a second time to select the proper records.&amp;nbsp; Here is a way you can do this in a single DATA step.&amp;nbsp; After sorting BY MON OPENDATE (or possibly BY MON OPENDATE ACCTNUM) :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; monthly_n=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until (last.month);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have_s;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by month;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; monthly_n + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; count=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until (last.month);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have_s;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by month;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if count &amp;lt;= 2 or count &amp;gt;= monthlY_n - 1 then output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ** if desired, drop count and monthly_n;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you are looking through the literature to find more examples of this technique, it's often called a DOW loop.&amp;nbsp; And if you only have three observations for a MON, it will output all three but will not output any of them more than once.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 20:20:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215372#M307556</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2015-04-02T20:20:12Z</dc:date>
    </item>
    <item>
      <title>Re: How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215373#M307557</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It worked. thanks,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Apr 2015 21:23:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215373#M307557</guid>
      <dc:creator>QLi</dc:creator>
      <dc:date>2015-04-02T21:23:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to find first N and last N obs with By variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215374#M307558</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;
proc sort data=have out=have_s; by Opendate acctNum; run;
data want;
merge have_s have_s(firstobs=2 keep=Mon rename=(Mon=_Mon));
if mon ne lag2(mon) or mon ne _mon;
drop _mon;
run;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Apr 2015 13:14:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-first-N-and-last-N-obs-with-By-variable/m-p/215374#M307558</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-04-03T13:14:46Z</dc:date>
    </item>
  </channel>
</rss>

