<?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 output an OBS based specific order in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458499#M116363</link>
    <description>&lt;P&gt;Assig a new variable ( a sort key) depending on ORRES so that sort wiil output the data in the right, required, order.&lt;/P&gt;
&lt;P&gt;After sort output the first or last obs in ID, depending on the code order:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* order required: order cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne */
proc format lib=work;
   value $sort
        'cr' = '1'
        'pr' = '2'
        'sd' = '3'
        'pd' = '4'
        'ne' = '5'
 ; run;
data temp;
 set one;
       sort_key = put(orres, $sort1.);
run;
proc sort data=temp; by ID sort_key; run;

data want;
 set temp;
   by ID sort_key;
        if first.sort_key then output;  /* assumed CR is the best */
  /*   if last.sort_key then output;  ** assumed NE is the best */
run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 30 Apr 2018 00:52:51 GMT</pubDate>
    <dc:creator>Shmuel</dc:creator>
    <dc:date>2018-04-30T00:52:51Z</dc:date>
    <item>
      <title>How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458485#M116355</link>
      <description>&lt;P&gt;Dear,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;i need help in my code. I trying to create find best response in the data.&lt;/P&gt;
&lt;P&gt;I have to follow:1. best time response before orres='pd' or up to visit='cy6' and follow&amp;nbsp;&amp;nbsp;order cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;output&amp;nbsp; needed;&lt;/P&gt;
&lt;P&gt;id&amp;nbsp; &amp;nbsp; &amp;nbsp; param&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aval&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;visit&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; date&lt;/P&gt;
&lt;P&gt;&amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cy6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2016-11-10&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sd&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-11-10&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data one;&lt;BR /&gt;input id test $ orres $ visit $ date $10.;
datalines;
1 ovrp sd cy5 2016-08-02 
1 ovrp pr cy6 2016-11-10
1 ovrp pd cy7 2016-12-10
2 ovrp sd cy4 2016-08-02 
2 ovrp pd cy5 2016-11-10
2 ovrp pd cy6 2016-11-10
3 ovrp cr cy4 2016-08-02 
3 ovrp pr cy5 2016-11-10
3 ovrp pd cy6 2016-11-10
4 ovrp cr cy4 2016-08-02 
4 ovrp pr cy5 2016-11-10
5 ovrp cr cy4 2016-08-02 
5 ovrp pr cy5 2016-11-10
5 ovrp sd dvs 2016-11-10
;
proc sort data=one;
by id date visit;
run;
data two;
retain param avalc adt;
do until(last.id);
set one;
by id;
if test='pd' or visit='cy6' then do;
param='bor';
avalc=orres;
adt=input(date,is8601da.);
format adt yymmdd10.;
output;
end;
end;
run;
&amp;nbsp;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 29 Apr 2018 21:54:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458485#M116355</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2018-04-29T21:54:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458488#M116357</link>
      <description>&lt;P&gt;1.Why this output?&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;There is is no 'pd' or 'cy6'.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;2. What does this mean?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;follow&amp;nbsp;&amp;nbsp;order cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 29 Apr 2018 22:19:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458488#M116357</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-04-29T22:19:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458489#M116358</link>
      <description>&lt;P&gt;Sorry. i did not explain clearly.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;pd=progressive disease&lt;/P&gt;
&lt;P&gt;bor=best respose&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For each subject I have to find 'bor' before the patient on or before visit='cy6' or befoe='pd'.&lt;/P&gt;
&lt;P&gt;if there are none, then I need to pick the best by following order(&lt;SPAN&gt;cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For id=4, there is no orres=' pd'&amp;nbsp; and visit='cy6' so&amp;nbsp; the bor='cr' because he has 'cr' at visit=cy4 and 'pr' at visit='cy5'. By following order(&lt;SPAN&gt;cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne)&amp;nbsp;&lt;/SPAN&gt; means if there are orres='cr' and orres='pr'&amp;nbsp; then take orres='cr'.&lt;/P&gt;
&lt;P&gt;Thank you&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;output&amp;nbsp; needed;&lt;/P&gt;
&lt;P&gt;id&amp;nbsp; &amp;nbsp; &amp;nbsp; param&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; aval&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;visit&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; date&lt;/P&gt;
&lt;P&gt;&amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cy6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2016-11-10&lt;/P&gt;
&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sd&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-08-02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bor&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pr&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cy5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2016-11-10&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 29 Apr 2018 22:40:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458489#M116358</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2018-04-29T22:40:15Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458491#M116360</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ONE ;
  input ID TEST $ ORRES $ VISIT $ DATE $10.;
datalines;
1 ovrp sd cy5 2016-08-02 
1 ovrp pr cy6 2016-11-10
1 ovrp pd cy7 2016-12-10
2 ovrp sd cy4 2016-08-02 
2 ovrp pd cy5 2016-11-10
2 ovrp pd cy6 2016-11-10
3 ovrp cr cy4 2016-08-02 
3 ovrp pr cy5 2016-11-10
3 ovrp pd cy6 2016-11-10
4 ovrp cr cy4 2016-08-02 
4 ovrp pr cy5 2016-11-10
5 ovrp cr cy4 2016-08-02 
5 ovrp pr cy5 2016-11-10
5 ovrp sd dvs 2016-11-10
;
proc sort data=ONE out=SORTED(index=(ID_ORRES=(ID ORRES)));
  by ID DATE  VISIT;
run;
data TWO; 
  set SORTED;
  by ID;

  %* init;
  if first.ID then ID_DONE=0;
  if ID_DONE=0;

  %* case 1 ;
  if VISIT='cy6' then do;       
    ID_DONE+1;
    output;
    return;
  end;

  %* case 2 ;
  NEXTOBS=_N_+1;
  set SORTED(keep=ID ORRES rename=(ID=NEXT_ID ORRES=NEXT_ORRES) ) point=NEXTOBS;
  if ID=NEXT_ID and NEXT_ORRES='pd' then do;  
    ID_DONE+1;
    output;
    return;
  end;

  %* case 3 ;
  if last.ID then do ORRES='cr','pr','sd','pd','ne';   
    set SORTED key=ID_ORRES ;
    if _IORC_ = 0 then do;
      output;
      leave;
    end;
  end;
  keep ID TEST ORRES VISIT DATE ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.TWO" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;ID&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;TEST&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;ORRES&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;VISIT&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;DATE&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;pr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy6&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-11-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;sd&lt;/TD&gt;
&lt;TD class="l data"&gt;cy4&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-08-02&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;pr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy5&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-11-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;cr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy4&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-08-02&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;cr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy4&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-08-02&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 29 Apr 2018 23:31:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458491#M116360</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-04-29T23:31:11Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458499#M116363</link>
      <description>&lt;P&gt;Assig a new variable ( a sort key) depending on ORRES so that sort wiil output the data in the right, required, order.&lt;/P&gt;
&lt;P&gt;After sort output the first or last obs in ID, depending on the code order:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* order required: order cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne */
proc format lib=work;
   value $sort
        'cr' = '1'
        'pr' = '2'
        'sd' = '3'
        'pd' = '4'
        'ne' = '5'
 ; run;
data temp;
 set one;
       sort_key = put(orres, $sort1.);
run;
proc sort data=temp; by ID sort_key; run;

data want;
 set temp;
   by ID sort_key;
        if first.sort_key then output;  /* assumed CR is the best */
  /*   if last.sort_key then output;  ** assumed NE is the best */
run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 30 Apr 2018 00:52:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458499#M116363</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2018-04-30T00:52:51Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458503#M116364</link>
      <description>&lt;P&gt;Thank you very much for the help. It will take some time for me to understand your code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The output for id=3 should be orres='cr'. But the output i am getting is orres='pr'. As per the order(&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne)&lt;/SPAN&gt;&amp;nbsp;I have to take the best response if present. Thank you&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Apr 2018 01:42:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458503#M116364</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2018-04-30T01:42:41Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458508#M116366</link>
      <description>&lt;P&gt;No. You said&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;the order(&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne)&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;is only if cy6 is not found. There is cy6 for ID =3.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Apr 2018 02:12:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458508#M116366</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-04-30T02:12:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458511#M116368</link>
      <description>&lt;P&gt;Sorry for the confusion.&lt;/P&gt;
&lt;P&gt;My specs says: I have to look until "first orres='pd' or visit='cy6' " which ever comes first then I have pick from the order&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;(cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne). That means, if there above&amp;nbsp; 'cr ' and 'pr'&amp;nbsp; until then&amp;nbsp; aval='cr' because that is the best observed response till then.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If there are no orres='pd' and visit='cy6' then I have to take last obs.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you very much&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Apr 2018 02:23:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458511#M116368</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2018-04-30T02:23:05Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458515#M116369</link>
      <description>&lt;P&gt;This matches the new specs, but still not your original output.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ONE ;
  input ID TEST $ ORRES $ VISIT $ DATE $10.;
datalines;
1 ovrp sd cy5 2016-08-02 
1 ovrp pr cy6 2016-11-10
1 ovrp pd cy7 2016-12-10
2 ovrp sd cy4 2016-08-02 
2 ovrp pd cy5 2016-11-10
2 ovrp pd cy6 2016-11-10
3 ovrp cr cy4 2016-08-02 
3 ovrp pr cy5 2016-11-10
3 ovrp pd cy6 2016-11-10
4 ovrp cr cy4 2016-08-02 
4 ovrp pr cy5 2016-11-10
5 ovrp cr cy4 2016-08-02 
5 ovrp pr cy5 2016-11-10
5 ovrp sd dvs 2016-11-10
;
proc sort data=ONE out=SORTED(index=(ID_ORRES=(ID ORRES)));
  by ID DATE  VISIT;
run;
data TWO; 
  set SORTED;
  by ID;

  %* init;
  if first.ID then ID_DONE=0;
  if ID_DONE=0;
  ORDER=6-whichc(ORRES,'cr','pr','sd','pd','ne');
  output;

  if VISIT='cy6' then do;
    ID_DONE+1;
    return;
  end;

  NEXTOBS=_N_+1;
  set SORTED(keep=ID ORRES rename=(ID=NEXT_ID ORRES=NEXT_ORRES) ) point=NEXTOBS;
  if ID=NEXT_ID and NEXT_ORRES='pd' then do;
    ID_DONE+1;
    return;
  end;

  if last.ID then do;
    ORDER=9e9;
    output;
  end;
  keep ID TEST ORRES VISIT DATE ORDER;
run;
proc sql;
  create table THREE as 
  select ID, TEST, ORRES, VISIT, DATE
  from TWO
  group by ID
  having ORDER=max(ORDER);
quit;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure SQL: Query Results" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r b header" scope="col"&gt;ID&lt;/TH&gt;
&lt;TH class="l b header" scope="col"&gt;TEST&lt;/TH&gt;
&lt;TH class="l b header" scope="col"&gt;ORRES&lt;/TH&gt;
&lt;TH class="l b header" scope="col"&gt;VISIT&lt;/TH&gt;
&lt;TH class="l b header" scope="col"&gt;DATE&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;pr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy6&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-11-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;sd&lt;/TD&gt;
&lt;TD class="l data"&gt;cy4&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-08-02&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;cr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy4&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-08-02&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;pr&lt;/TD&gt;
&lt;TD class="l data"&gt;cy5&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-11-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;ovrp&lt;/TD&gt;
&lt;TD class="l data"&gt;sd&lt;/TD&gt;
&lt;TD class="l data"&gt;dvs&lt;/TD&gt;
&lt;TD class="l data"&gt;2016-11-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Apr 2018 02:53:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458515#M116369</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-04-30T02:53:44Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458680#M116423</link>
      <description>&lt;P&gt;Thank you very much for the great help. I just modified a little to get the output i need.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the code :&lt;/P&gt;
&lt;P&gt;I just changed order=9e9&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; to&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN&gt;6-whichc(ORRES,'cr','pr','sd','pd','ne');&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;if last.ID then do;&lt;BR /&gt; ORDER=6-whichc(ORRES,'cr','pr','sd','pd','ne');&lt;BR /&gt; output;&lt;BR /&gt; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sorry, I should have read my specs clearly. It says "&lt;SPAN&gt;If there are no orres='pd' and visit='cy6'"&amp;nbsp; then I have to look until last obs and take best response till then(cr&amp;gt;pr&amp;gt;sd&amp;gt;pd&amp;gt;ne).&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Apr 2018 15:13:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458680#M116423</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2018-04-30T15:13:56Z</dc:date>
    </item>
    <item>
      <title>Re: How to output an OBS based specific order</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458850#M116469</link>
      <description>&lt;P&gt;In this case you don't need the&amp;nbsp;&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; last&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;ID &lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;block.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Apr 2018 21:22:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-output-an-OBS-based-specific-order/m-p/458850#M116469</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-04-30T21:22:36Z</dc:date>
    </item>
  </channel>
</rss>

