<?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: Outputting Obvservations until a criteria is met in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321368#M70943</link>
    <description>&lt;P&gt;Please try&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PT_ID$         date: ddmmyy10.           result    criteria_met$;
format date date9.;
cards;
x           1/1/2015         500           yes
x           2/1/2015         470           no
x            3/1/2015        525          yes
z            2/2/2015        450           no
z            3/3/2015         575         yes
k            5/4/2015        650         yes
;

proc sort data=have;
by  pt_id descending criteria_met  date;
run;

data want;
do until(first.pt_id);
set have;
  by pt_id descending criteria_met  date;
if first.pt_id then yesdate=date;
end;
do until(last.pt_id);
set have;
  by pt_id descending criteria_met  date;
if date&amp;lt;=yesdate then output;
format yesdate date9.;
end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 28 Dec 2016 01:59:02 GMT</pubDate>
    <dc:creator>Jagadishkatam</dc:creator>
    <dc:date>2016-12-28T01:59:02Z</dc:date>
    <item>
      <title>Outputting Obvservations until a criteria is met</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321332#M70927</link>
      <description>&lt;P&gt;Hello.&amp;nbsp; Here is what I have:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PT_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result&amp;nbsp;&amp;nbsp;&amp;nbsp; criteria_met&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/1/2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2/1/2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;470&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3/1/2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;525&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; z&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2/2/2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;450&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; z&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3/32015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;575&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; k&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5/4/2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;650&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;basically, what I want is all the data for a particular patient up through their first 'Yes' in the criteria_met column.&amp;nbsp; So patient x will have 1 observation, patient z will have 2 and patient k will have 1 observation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any help is appreicated!&amp;nbsp; Thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Dec 2016 20:20:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321332#M70927</guid>
      <dc:creator>Katie</dc:creator>
      <dc:date>2016-12-27T20:20:42Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting Obvservations until a criteria is met</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321342#M70932</link>
      <description>&lt;P&gt;Code not tested but should do the job.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop=_output_flg);
  set have;
  by pt_id date;
  retain _output_flg;
  if first.pt_id then _output_flg=1;
  if _output_flg=1 then output;
  if upcase(criteria_met)='YES' then _output_flg=0;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 27 Dec 2016 21:07:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321342#M70932</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2016-12-27T21:07:51Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting Obvservations until a criteria is met</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321368#M70943</link>
      <description>&lt;P&gt;Please try&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PT_ID$         date: ddmmyy10.           result    criteria_met$;
format date date9.;
cards;
x           1/1/2015         500           yes
x           2/1/2015         470           no
x            3/1/2015        525          yes
z            2/2/2015        450           no
z            3/3/2015         575         yes
k            5/4/2015        650         yes
;

proc sort data=have;
by  pt_id descending criteria_met  date;
run;

data want;
do until(first.pt_id);
set have;
  by pt_id descending criteria_met  date;
if first.pt_id then yesdate=date;
end;
do until(last.pt_id);
set have;
  by pt_id descending criteria_met  date;
if date&amp;lt;=yesdate then output;
format yesdate date9.;
end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Dec 2016 01:59:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321368#M70943</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2016-12-28T01:59:02Z</dc:date>
    </item>
    <item>
      <title>Re: Outputting Obvservations until a criteria is met</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321373#M70944</link>
      <description>&lt;P&gt;You want to output all records up through the first positive (criteria_met='yes').&amp;nbsp; So all you need to do is keep a running count of the number of positives encountered (N_POS in the program below).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Notes:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The program below assumes the data are grouped by PT_ID (and sorted by date within each PT_ID group).&amp;nbsp; But, while grouped by PT_ID,&amp;nbsp;it appears&amp;nbsp;not to be in ascending PT_ID order - hence the "by pt_id NOTSORTED".&amp;nbsp; If it's not grouped, or not sorted by date within PT_ID, then sort dataset have by PT_ID/date first.&lt;/LI&gt;
&lt;LI&gt;The subsetting "if n_pos=0" might make you think that only records BEFORE the first positive will be output.&amp;nbsp; But note that N_POS is not updated until after the subsetting if - as a result the first positive will be output, even though N_POS has become 1.&amp;nbsp; All subsequent records within a PT_ID will be filtered out.&amp;nbsp; If you want to see the evidence remove the "drop n_pos" statement and look at the output.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Sasfont"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; have;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;input&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; PT_ID$ date: &lt;/FONT&gt;&lt;FONT color="#008080" face="Sasfont"&gt;ddmmyy10.&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; result criteria_met$;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;format&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; date &lt;/FONT&gt;&lt;FONT color="#008080" face="Sasfont"&gt;date9.&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;cards&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;x 1/1/2015 500 yes&lt;/P&gt;
&lt;P&gt;x 2/1/2015 470 no&lt;/P&gt;
&lt;P&gt;x 3/1/2015 525 yes&lt;/P&gt;
&lt;P&gt;z 2/2/2015 450 no&lt;/P&gt;
&lt;P&gt;z 3/3/2015 575 yes&lt;/P&gt;
&lt;P&gt;k 5/4/2015 650 yes&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Sasfont"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; want;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;&amp;nbsp; set&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; have;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;&amp;nbsp; by&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; pt_id &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;notsorted&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;&amp;nbsp; if&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; first.pt_id &lt;/FONT&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;then&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; n_pos=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Sasfont"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Sasfont"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="Sasfont"&gt;&amp;nbsp; if&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt; n_pos=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Sasfont"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Sasfont"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Sasfont"&gt;&amp;nbsp;&amp;nbsp;n_pos + (criteria_met=&lt;/FONT&gt;&lt;FONT color="#800080" face="Sasfont"&gt;'yes'&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt;);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Sasfont"&gt;&amp;nbsp; drop n_pos;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="Sasfont"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="Sasfont"&gt;;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 28 Dec 2016 02:47:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Outputting-Obvservations-until-a-criteria-is-met/m-p/321373#M70944</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-12-28T02:47:35Z</dc:date>
    </item>
  </channel>
</rss>

