<?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: SAS can not identify last.month in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436193#M282145</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
 by stocks month_year notsorted ;
     if last.month_year then output;
  run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 12 Feb 2018 11:05:13 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2018-02-12T11:05:13Z</dc:date>
    <item>
      <title>SAS can not identify last.month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436175#M282143</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a data structured like this, where dates are trading days and month_year is a character variable created by this function:&lt;/P&gt;&lt;P&gt;month_year=put(date,monyy7.);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Stocks&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;Month_year&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;……………..&lt;/TD&gt;&lt;TD&gt;……………..&lt;/TD&gt;&lt;TD&gt;……………&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;01/04/2011&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;04/04/2011&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;05/04/2011&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;06/04/2011&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;………………………&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;28/04/2011&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ABC&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;29/04/2011&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Apr2011&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;02/05/2011&lt;/TD&gt;&lt;TD&gt;May2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;03/05/2011&lt;/TD&gt;&lt;TD&gt;May2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;………………………………&lt;/TD&gt;&lt;TD&gt;May2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ABC&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;31/05/2011&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;May2011&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;02/12/2010&lt;/TD&gt;&lt;TD&gt;Dec2010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;03/12/2010&lt;/TD&gt;&lt;TD&gt;Dec2010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;05/12/2010&lt;/TD&gt;&lt;TD&gt;Dec2010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;06/12/2010&lt;/TD&gt;&lt;TD&gt;Dec2010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;………..&lt;/TD&gt;&lt;TD&gt;…………..&lt;/TD&gt;&lt;TD&gt;Dec2010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;XYZ&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;30/12/2010&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Dec2010&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;03/01/2011&lt;/TD&gt;&lt;TD&gt;Jan2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;04/01/2011&lt;/TD&gt;&lt;TD&gt;Jan2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;05/01/2011&lt;/TD&gt;&lt;TD&gt;Jan2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;06/01/2011&lt;/TD&gt;&lt;TD&gt;Jan2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;………&lt;/TD&gt;&lt;TD&gt;………&lt;/TD&gt;&lt;TD&gt;…………..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;XYZ&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;29/01/2011&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Jan2011&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I want to identify the last trading day each month for each stock. The output should look like this, where dates are last trading date of each month:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Stocks&lt;/TD&gt;&lt;TD&gt;Date&lt;/TD&gt;&lt;TD&gt;Month_year&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;………..&lt;/TD&gt;&lt;TD&gt;……….&lt;/TD&gt;&lt;TD&gt;…………&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;28/04/2011&lt;/TD&gt;&lt;TD&gt;Apr2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC&lt;/TD&gt;&lt;TD&gt;31/05/2011&lt;/TD&gt;&lt;TD&gt;May2011&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;………..&lt;/TD&gt;&lt;TD&gt;……….&lt;/TD&gt;&lt;TD&gt;………..&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;30/12/2010&lt;/TD&gt;&lt;TD&gt;Dec2010&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ&lt;/TD&gt;&lt;TD&gt;29/01/2011&lt;/TD&gt;&lt;TD&gt;Jan2011&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;I use this code:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;BR /&gt;set have;&lt;BR /&gt;&amp;nbsp;by stocks date month_year;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.month_year then output;&lt;BR /&gt;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, this code produce the original data (with all the dates within month). That means SAS identify every observations in the month_year column as last.month_year. This is hard to understand because I convert the month_year to character.&lt;/P&gt;&lt;P&gt;Could anyone show me how to fix it? Thank you for your time&lt;/P&gt;</description>
      <pubDate>Mon, 12 Feb 2018 09:25:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436175#M282143</guid>
      <dc:creator>trungcva112</dc:creator>
      <dc:date>2018-02-12T09:25:41Z</dc:date>
    </item>
    <item>
      <title>Re: SAS can not identify last.month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436180#M282144</link>
      <description>&lt;P&gt;Post test data in the form of a datastep!&lt;/P&gt;
&lt;P&gt;This:&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;by stocks date month_year;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Sets up a flag in the data based on month_year being a subgroup of date and as date is unique for each row, each row's month_year is both the first and last within the date value.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What would be a better method:&lt;/P&gt;
&lt;PRE&gt;proc sort data=yourdata;
  by stocks month_year descending date;
run;
proc sort data=yourdata nodupkey;
  by stocks month_year;
run;&lt;/PRE&gt;
&lt;P&gt;This will order the data so the last date is first per stocks group month_year, then the second sort takes the first row from each group.&amp;nbsp; You can do it with first/last, do the sort as given first step, then first.month_year on the result, e.g&lt;/P&gt;
&lt;PRE&gt;proc sort data=yourdata;
  by stocks month_year descending date;
run;&lt;BR /&gt;data want;&lt;BR /&gt;  set yourdata;&lt;BR /&gt;  by stocks month_year;&lt;BR /&gt;  if first.month_year then output;&lt;BR /&gt;run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Feb 2018 09:28:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436180#M282144</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-02-12T09:28:56Z</dc:date>
    </item>
    <item>
      <title>Re: SAS can not identify last.month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436193#M282145</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
 by stocks month_year notsorted ;
     if last.month_year then output;
  run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 12 Feb 2018 11:05:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-can-not-identify-last-month/m-p/436193#M282145</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-02-12T11:05:13Z</dc:date>
    </item>
  </channel>
</rss>

