<?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 sort and find an obs and flag the obs in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344257#M79102</link>
    <description>&lt;P&gt;You are asking too much thing .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID    TYPE $     TEST   $  VISIT     $    VISITWINDOW         VALUE        DATE  : $20.;
cards;
1         R           dbp      1                    1                           8           2014-07-30        
1         R           dbp      un                  1                           9            2014-08-10
2        R            dbp       1                   1                           7            2014-07-30
2       R              dbp      1                   1                           8             2014-08-10         
3       R              dbp     un                  1                           6              2014-07-30
3      R              dbp       un                1                           8                2014-08-10        
4       R               dbp     1                1                            6                  2014-07-30       
5       R            dbp          1               1                         .                    2014-07-28
5       R            dbp         un             1                         2                    2014-07-27         
6       R            dbp         1                  1                        2                     2014-07 26      
6        R            dbp         1                  1                        .                      2014-07-30
7        M            dbp         1                 1                         4                       2014-07-30
7        M            dbp         un               1                          3                       2014-08-10 
;    
run;

data want;
 do i=1 by 1 until(last.id);
  set have;
  by id;
  if visit=1 and type='R' and not missing(value) then idx=i;
 end;

 do j=1 by 1 until(last.id);
  set have;
  by id;
  flag=' ';
  if idx=j and type='R' then flag='Y'; 
  if last.id and type='R' and missing(idx) then flag='Y';
  output;
 end;
drop i j idx;
run;

proc print;run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 25 Mar 2017 04:34:53 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2017-03-25T04:34:53Z</dc:date>
    <item>
      <title>How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343962#M79005</link>
      <description>&lt;P&gt;Dear,&lt;/P&gt;&lt;P&gt;I need to flag only one obs by id test visitwindow.&lt;/P&gt;&lt;P&gt;In the visitvindow, first &amp;nbsp;I have to search for scheduled visit(visit=1). If scheduled visit is there within visitwindow then it should be flagged.&lt;/P&gt;&lt;P&gt;If there are more than one scheduled visits within a visitwindow then flag last one. (id=2)&lt;/P&gt;&lt;P&gt;if there are no scheduled visits(visit=un) then flag last one.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please help. Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;output needed:&lt;/P&gt;&lt;P&gt;id &amp;nbsp; test visit &amp;nbsp; &amp;nbsp;visitwindow &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; flag&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Y&lt;/P&gt;&lt;P&gt;4 &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;PRE&gt;data one;
input id test$ visit $ visitwindow vsdtc $10.;
datalines;&lt;BR /&gt;4 dbp 1 1 2014-07-30
1 dbp 1 1 2014-07-30
1 dbp un 1 2014-08-10
2 dbp 1 1 2014-07-30
2 dbp 1 1 2014-08-10
3 dbp un 1 2014-07-30
3 dbp un 1 2014-08-10&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Mar 2017 06:03:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343962#M79005</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2017-03-24T06:03:41Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343965#M79006</link>
      <description>&lt;P&gt;Let me take a first pass at this by using LAST. processing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc format;
value unkvis .='UN';
run;
data have;
input id test$ visit ??:3.  visitwindow vsdtc :yymmdd10.;
format vsdtc date9. visit unkvis.;
datalines;
4 dbp 1 1 2014-07-30
1 dbp 1 1 2014-07-30
1 dbp un 1 2014-08-10
2 dbp 1 1 2014-07-30
2 dbp 1 1 2014-08-10
3 dbp un 1 2014-07-30
3 dbp un 1 2014-08-10
run;
proc sort data=have;
   by id visit;
   run;
data want;
   set have;
   by id visit;
   if last.id then flag='Y';
   run;
proc print data=want;
   run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 24 Mar 2017 06:40:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343965#M79006</guid>
      <dc:creator>ArtC</dc:creator>
      <dc:date>2017-03-24T06:40:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343967#M79007</link>
      <description>&lt;P&gt;Thank you for the support. I am not getting the output I need. For the ID=1, I am getting output (flag='Y') where visit='un'. &amp;nbsp;If scheduled visit is present in a visitwindow then it should be flagged. Thank you for your time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Visit='un' is an unscheduled visit.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Mar 2017 06:46:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343967#M79007</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2017-03-24T06:46:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343968#M79008</link>
      <description>&lt;P&gt;The trick to doing the right thing is "knowing" how many scheduled visits there are. &amp;nbsp;Here's one way to program this.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since your dates are in YYMMDD form, sorting on a character date will get the observations in the proper order:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=have;&lt;/P&gt;
&lt;P&gt;by id test visitwindow&amp;nbsp;sasdate;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then a DATA step can count the number of scheduled visits (in the top loop) and flag accordingly (in the bottom loop).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;n_scheduled=0;&lt;/P&gt;
&lt;P&gt;do until (last.visitwindow);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by id test visitwindow;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if visit='1' then n_scheduled + 1;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;total_n=0;&lt;/P&gt;
&lt;P&gt;do until (last.visitwindow);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by id test visitwindow;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;flag=' ';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if visit='1' then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; total_n + 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if total_n = n_scheduled then flag='Y';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if last.visitwindow and n_scheduled=0 then flag='Y';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop n_scheduled total_n;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Mar 2017 07:13:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343968#M79008</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-03-24T07:13:40Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343970#M79009</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data one;
input id test $ visit $ visitwindow vsdt yymmdd10.;
format vsdt yymmddd10.;
datalines;
4 dbp 1 1 2014-07-30
1 dbp 1 1 2014-07-30
1 dbp un 1 2014-08-10
2 dbp 1 1 2014-07-30
2 dbp 1 1 2014-08-10
3 dbp un 1 2014-07-30
3 dbp un 1 2014-08-10
;
run;

proc sort data=one;
by id test visitwindow descending vsdt;
run;

data want (keep=id test visitwindow visit vsdt flag);
set one;
by id test visitwindow;
retain set_flg;
if first.visitwindow
then set_flg = 0;
if visit ne 'un'
then do;
  if not set_flg
  then flag = 'Y';
  set_flg = 1;
end;
run;

proc sort data=want;
by id test visitwindow vsdt;
run;

data want;
set want;
by id test visitwindow;
retain un_flg;
if first.visitwindow then un_flg = 1;
if visit ne 'un' then un_flg = 0;
if last.visitwindow and un_flg then flag = 'Y';
drop un_flg;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The result:&lt;/P&gt;
&lt;PRE&gt;id    test    visit    visitwindow          vsdt    flag

 1    dbp      1            1         2014-07-30     Y  
 1    dbp      un           1         2014-08-10        
 2    dbp      1            1         2014-07-30        
 2    dbp      1            1         2014-08-10     Y  
 3    dbp      un           1         2014-07-30        
 3    dbp      un           1         2014-08-10     Y  
 4    dbp      1            1         2014-07-30     Y  
&lt;/PRE&gt;
&lt;P&gt;matches your needed output.&lt;/P&gt;</description>
      <pubDate>Fri, 24 Mar 2017 07:14:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/343970#M79009</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-03-24T07:14:46Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344027#M79027</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id test$ visit $  visitwindow vsdtc :yymmdd10.;
format vsdtc date9. ;
datalines;
1 dbp 1 1 2014-07-30
1 dbp un 1 2014-08-10
2 dbp 1 1 2014-07-30
2 dbp 1 1 2014-08-10
3 dbp un 1 2014-07-30
3 dbp un 1 2014-08-10
4    dbp      1    1                2014-07-30    
run;

data want;
 do i=1 by 1 until(last.id);
  set have;
  by id;
  if visit=1 then idx=i;
 end;

 do j=1 by 1 until(last.id);
  set have;
  by id;
  flag=' ';
  if idx=j then flag='Y'; 
  if last.id and missing(idx) then flag='Y';
  output;
 end;
drop i j idx;
run;

proc print;run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 24 Mar 2017 11:01:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344027#M79027</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-03-24T11:01:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344141#M79060</link>
      <description>for ID 1, i am getting the flag on the correct observation.  in your test did you have a numeric visit number?  if so are you using an ascii machine?</description>
      <pubDate>Fri, 24 Mar 2017 17:48:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344141#M79060</guid>
      <dc:creator>ArtC</dc:creator>
      <dc:date>2017-03-24T17:48:14Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344225#M79087</link>
      <description>&lt;P&gt;Dear,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Your code worked. But for some OBS, the code needs to be modified. I tried but did not get the output I need.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are two more variable added to data "have" since last post. The variable are 'type' &amp;nbsp;'value.'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;First I need to flag only for type='R'.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Second, if value is blank when visit=scheduled then next obs should be flagged.( Eg; ID=5. With the code iam flagging scheduled visit with variable "value=blank." If the value is blank the next obs should be flagged).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;(Eg.ID=6. &amp;nbsp;With the code I am flagging the date=2014-07-30. But the variable "value " for the obs is blank. The date with2014-07-26 should be flagged.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please help. Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;OUTPUT NEEDED:&lt;/P&gt;&lt;P&gt;ID &amp;nbsp; &amp;nbsp;TYPE &amp;nbsp; &amp;nbsp; &amp;nbsp;TEST &amp;nbsp; &amp;nbsp; VISIT &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VISITWINDOW &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VALUE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DATE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FLAG&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 9 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;BR /&gt;4 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;BR /&gt;5 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 . &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; . &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-28&lt;BR /&gt;5 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-27 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;/P&gt;&lt;P&gt;6 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07 26 &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;/P&gt;&lt;P&gt;6 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &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 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10 &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data have;
input id type $ test$ visit $  visitwindow value vsdtc :yymmdd10.;
format vsdtc date9. ;
datalines;
1 R dbp 1 1 8 2014-07-30
1 R dbp un 1 9 2014-08-10
2 R dbp 1 1 7 2014-07-30
2 R dbp 1 1 8 2014-08-10
3 R dbp un 1 6 2014-07-30
3 R dbp un 1 8 2014-08-10
4 R dbp 1 1 6 2014-07-30 
5 R dbp 1 1 . 2014-07-28 
5 R dbp un 1 2 2014-07-27 
1 M dbp 1 1 2014-07-30
1 M dbp un 1 2014-08-10
2 M dbp 1 1 2014-07-30
2 M dbp 1 1 2014-08-10
3 M dbp un 1 2014-07-30
3 M dbp un 1 2014-08-10
4 M dbp 1 1 2014-07-30  
run;&lt;BR /&gt;&lt;BR /&gt;your code;&lt;/PRE&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; want&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 do i&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; until&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;last&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; visit&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; idx&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 end&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

 do j&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; until&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;last&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;id&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  flag&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; idx&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;j &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; flag&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'Y'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&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; and &lt;SPAN class="token function"&gt;missing&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;idx&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; flag&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'Y'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
  output&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
 end&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token keyword"&gt;drop&lt;/SPAN&gt; i j idx&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;proc&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;print&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;SPAN class="token procnames"&gt;run;&lt;/SPAN&gt;&lt;/CODE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 25 Mar 2017 00:08:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344225#M79087</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2017-03-25T00:08:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to sort and find an obs and flag the obs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344257#M79102</link>
      <description>&lt;P&gt;You are asking too much thing .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID    TYPE $     TEST   $  VISIT     $    VISITWINDOW         VALUE        DATE  : $20.;
cards;
1         R           dbp      1                    1                           8           2014-07-30        
1         R           dbp      un                  1                           9            2014-08-10
2        R            dbp       1                   1                           7            2014-07-30
2       R              dbp      1                   1                           8             2014-08-10         
3       R              dbp     un                  1                           6              2014-07-30
3      R              dbp       un                1                           8                2014-08-10        
4       R               dbp     1                1                            6                  2014-07-30       
5       R            dbp          1               1                         .                    2014-07-28
5       R            dbp         un             1                         2                    2014-07-27         
6       R            dbp         1                  1                        2                     2014-07 26      
6        R            dbp         1                  1                        .                      2014-07-30
7        M            dbp         1                 1                         4                       2014-07-30
7        M            dbp         un               1                          3                       2014-08-10 
;    
run;

data want;
 do i=1 by 1 until(last.id);
  set have;
  by id;
  if visit=1 and type='R' and not missing(value) then idx=i;
 end;

 do j=1 by 1 until(last.id);
  set have;
  by id;
  flag=' ';
  if idx=j and type='R' then flag='Y'; 
  if last.id and type='R' and missing(idx) then flag='Y';
  output;
 end;
drop i j idx;
run;

proc print;run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 25 Mar 2017 04:34:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-sort-and-find-an-obs-and-flag-the-obs/m-p/344257#M79102</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-03-25T04:34:53Z</dc:date>
    </item>
  </channel>
</rss>

