<?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: Extract all Observations after Latest Amount Spent=X (inclusive) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248273#M46618</link>
    <description>&lt;P&gt;Well, minor change to the code then (and no, I dont look at attachments - post test data in the form of a datastep):&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;
  retain o;
  by name;
  if first.name then o=1; 
  if value="X" then o=0;  /* If X is encountered, stop outputting */
  if o then output;
run;&lt;/PRE&gt;</description>
    <pubDate>Fri, 05 Feb 2016 15:21:31 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2016-02-05T15:21:31Z</dc:date>
    <item>
      <title>Extract all Observations after Latest Amount Spent=X (inclusive)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248264#M46613</link>
      <description>&lt;P&gt;Using SAS 7.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am quite new to SAS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please see attached file. I have a similar dateset.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For each unique name I want to extract all the records from the &lt;U&gt;latest&lt;/U&gt; Amount Spent=X onwards, inclusive of the observation with the latest Amount Spent=X&lt;/P&gt;
&lt;P&gt;Eg&lt;/P&gt;
&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="192"&gt;&lt;COLGROUP&gt;&lt;COL style="width: 48pt;" span="3" width="64" /&gt; &lt;/COLGROUP&gt;
&lt;TBODY&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD style="height: 15.0pt; width: 48pt;" height="20" width="64"&gt;John&lt;/TD&gt;
&lt;TD style="width: 48pt;" align="right" width="64"&gt;20160521&lt;/TD&gt;
&lt;TD style="width: 48pt;" align="right" width="64"&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD style="height: 15.0pt;" height="20"&gt;John&lt;/TD&gt;
&lt;TD align="right"&gt;20160101&lt;/TD&gt;
&lt;TD align="right"&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 15.0pt;"&gt;
&lt;TD style="height: 15.0pt;" height="20"&gt;John&lt;/TD&gt;
&lt;TD align="right"&gt;20150526&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;How do I do so?&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 15:02:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248264#M46613</guid>
      <dc:creator>apple</dc:creator>
      <dc:date>2016-02-05T15:02:53Z</dc:date>
    </item>
    <item>
      <title>Re: Extract all Observations after Latest Amount Spent=X (inclusive)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248265#M46614</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Its a good idea to put test data as a datastep rather than attaching files. &amp;nbsp;So this is just off the top of my head:&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; retain o;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; by name;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if first.name then o=0; &amp;nbsp;/* o is a flag 0=not output, 1 to output */&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if value="X" then o=1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if o then output;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 15:06:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248265#M46614</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-02-05T15:06:17Z</dc:date>
    </item>
    <item>
      <title>Re: Extract all Observations after Latest Amount Spent=X (inclusive)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248271#M46617</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for the reply.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But I don't think you looked at the file.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Example Dataset&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE width="192"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Amount Spent&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20160521&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20160101&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20150526&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20150329&lt;/TD&gt;
&lt;TD&gt;23&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20150215&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20141212&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Peter&lt;/TD&gt;
&lt;TD&gt;20151203&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Peter&lt;/TD&gt;
&lt;TD&gt;20150321&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Peter&lt;/TD&gt;
&lt;TD&gt;20141123&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Albert&lt;/TD&gt;
&lt;TD&gt;20150408&lt;/TD&gt;
&lt;TD&gt;X&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;The output that I want&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE width="192"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Name&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;Amount Spent&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20160521&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20160101&lt;/TD&gt;
&lt;TD&gt;50&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;John&lt;/TD&gt;
&lt;TD&gt;20150526&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Peter&lt;/TD&gt;
&lt;TD&gt;20151203&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Peter&lt;/TD&gt;
&lt;TD&gt;20150321&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Albert&lt;/TD&gt;
&lt;TD&gt;20150408&lt;/TD&gt;
&lt;TD&gt;X&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code you provided&amp;nbsp; will only extract the observations with X, and after X.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 15:16:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248271#M46617</guid>
      <dc:creator>apple</dc:creator>
      <dc:date>2016-02-05T15:16:16Z</dc:date>
    </item>
    <item>
      <title>Re: Extract all Observations after Latest Amount Spent=X (inclusive)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248273#M46618</link>
      <description>&lt;P&gt;Well, minor change to the code then (and no, I dont look at attachments - post test data in the form of a datastep):&lt;/P&gt;
&lt;PRE&gt;data want;
  set have;
  retain o;
  by name;
  if first.name then o=1; 
  if value="X" then o=0;  /* If X is encountered, stop outputting */
  if o then output;
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 05 Feb 2016 15:21:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248273#M46618</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-02-05T15:21:31Z</dc:date>
    </item>
    <item>
      <title>Re: Extract all Observations after Latest Amount Spent=X (inclusive)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248291#M46630</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/2829"&gt;@apple﻿&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is another approach:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Create test data, incl. a name without Amount_Spent=.X */

data have;
missing x;
input Name $ Date :yymmdd. Amount_Spent;
format date yymmddn8.;
cards;
John   20160521   6
John   20160101  50
John   20150526   X
John   20150329  23
John   20150215   X
John   20141212  10
Peter  20151203 150
Peter  20150321   X
Peter  20141123  20
Albert 20150408   X
Jack   20141024  50
;

/* Add sequential number in case that sort order is to be preserved */

data temp;
set have;
seqno=_n_;
run;

proc sort data=temp;
by name descending date;
run;

/* Create target dataset up to sort order */

data want0;
do until(last.name);
  set temp;
  by name;
  if amount_spent=.X then flagX=1;
end;
do until(last.name);
  set temp;
  by name descending date;
  if first.name then flag=1;
  if flagX &amp;amp; flag then output;
  if amount_spent=.X then flag=0;
end;
drop flag:;
run;

proc sort data=want0 out=want(drop=seqno);
by seqno;
run;

proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Edit: Please note that I interpreted your "X" values as special missing values. If I were you, I would strongly prefer to define Amount_Spent as a numeric variable, because it contains numbers, not "codes" consisting of digits. Character variables are not suitable for doing&amp;nbsp;calculations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there a possibility that one person has spent two amounts on the same date, maybe one .X and one non-missing? What would be the selection criterion in this case?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit 2: Simplified definition of variable FLAG (&lt;FONT face="courier new,courier"&gt;if first.name ...&lt;/FONT&gt;).&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 16:42:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248291#M46630</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2016-02-05T16:42:51Z</dc:date>
    </item>
    <item>
      <title>Re: Extract all Observations after Latest Amount Spent=X (inclusive)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248342#M46652</link>
      <description>&lt;P&gt;data have;&lt;BR /&gt;infile cards dsd;&lt;BR /&gt;informat name $6. date yymmdd8. amount_spent 8.;&lt;BR /&gt;format name $6. date yymmddn8. amount_spent 8.;&lt;BR /&gt;input Name Date Amount_Spent;&lt;BR /&gt;cards;&lt;BR /&gt;John,20160521,6&lt;BR /&gt;John,20160101,50&lt;BR /&gt;John,20150526,.&lt;BR /&gt;John,20150329,23&lt;BR /&gt;John,20150215,.&lt;BR /&gt;John,20141212,10&lt;BR /&gt;Peter,20151203,150&lt;BR /&gt;Peter,20150321,.&lt;BR /&gt;Peter,20141123,20&lt;BR /&gt;Albert,20150408,.&lt;BR /&gt;;run;&lt;BR /&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select *&lt;BR /&gt;from have where date &amp;gt;= (select max(date)&lt;BR /&gt;from have&lt;BR /&gt;where missing(amount_spent));&lt;/P&gt;</description>
      <pubDate>Fri, 05 Feb 2016 17:17:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Extract-all-Observations-after-Latest-Amount-Spent-X-inclusive/m-p/248342#M46652</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2016-02-05T17:17:10Z</dc:date>
    </item>
  </channel>
</rss>

