<?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 assign a flag to a test based on OBS present after treatment date in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318766#M69883</link>
    <description>&lt;P&gt;It is easy to do in a single&amp;nbsp;step:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;proc sort;
  by id test testdate;
run;


data want;
  merge have(where=(testdate&amp;gt;treatmendate) in=after) have;
  by id test;
  if first.test and after then flag='Y';
run;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just remember to put the un-subsetted table last in the MERGE statement, so that the variables overwrite the ones from the subset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 14 Dec 2016 07:36:19 GMT</pubDate>
    <dc:creator>s_lassen</dc:creator>
    <dc:date>2016-12-14T07:36:19Z</dc:date>
    <item>
      <title>how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318089#M69666</link>
      <description>&lt;P&gt;Dear,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In my dataset, the following is present. I need assign a base line flag to all OBS done before treatmentstartdate and the test must be done at least after once after treatment date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; test &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; testdate &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;treatmendate &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; period&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a &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;01AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b &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;02AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c &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;03AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d &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;04AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e &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;11AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; f &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;12AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a &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;20AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b &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;21AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c &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;23AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &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&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d &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;22AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&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; &amp;nbsp; &amp;nbsp; test &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; testdate &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;treatmenstarttdate &amp;nbsp; &amp;nbsp; &amp;nbsp; period &amp;nbsp; &amp;nbsp; &amp;nbsp; &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; &amp;nbsp; a &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;01AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &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;Y&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b &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;02AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &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; Y&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c &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;03AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &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; Y&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d &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;04AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &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; Y&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e &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;11AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; f &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;12AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; a &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;20AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; b &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;21AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c &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;23AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &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&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d &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;22AUG2015 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 15AUG2016 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The flag not assigned to OBS 5 and 6 because the test are not repeated after treatment date. Please help. Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 10 Dec 2016 23:24:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318089#M69666</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2016-12-10T23:24:03Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318096#M69671</link>
      <description>&lt;P&gt;I'm assuming that a test ON the treatment date is the same as a test AFTER. &amp;nbsp;But it's not that difficult to change it up.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also assuming that the dates are SAS dates:&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 testdate;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data flag_these:&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by id test;&lt;/P&gt;
&lt;P&gt;where testdate&amp;nbsp;&amp;gt;=&amp;nbsp;treatmentdate;&lt;/P&gt;
&lt;P&gt;if last.test;&lt;/P&gt;
&lt;P&gt;keep id test;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;merge have flag_these (in=set_flag);&lt;/P&gt;
&lt;P&gt;by id test;&lt;/P&gt;
&lt;P&gt;if set_flag and testdate &amp;lt; treatmentdate then flag='Y';&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can always re-sort the data set at the end if that's a requirement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It wouldn't surprise me if there are some clever SQL programmers out there that can make this happen it one step.&lt;/P&gt;</description>
      <pubDate>Sun, 11 Dec 2016 01:26:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318096#M69671</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-12-11T01:26:37Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318107#M69673</link>
      <description>&lt;P&gt;I don't understand how to define "&lt;SPAN&gt; test are not repeated after treatment date"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;and why period=2 don't have flag=Y ?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 11 Dec 2016 04:20:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318107#M69673</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-12-11T04:20:16Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318108#M69674</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/68272"&gt;@knveraraju91&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't think this will do what you intend.&amp;nbsp; Testdate (all in 2015) is never &amp;gt;= treatmendate (all in 2016)&lt;/P&gt;</description>
      <pubDate>Sun, 11 Dec 2016 04:26:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318108#M69674</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-12-11T04:26:44Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318110#M69675</link>
      <description>&lt;P&gt;I take it the treatmenstartdate in your output is the earliest value of treatmendate for a given id/test.&amp;nbsp; In your sample, it doesn't matter since you treatmendate is constant, but this program assume it can change, even within a given id/test.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This program needs&amp;nbsp;your dataset to be sorted by any of:&amp;nbsp; (id/testdate&amp;nbsp; id/test/testdate testdate/id).&amp;nbsp; It's a single pass through the data, and it uses two hash objects (think lookup tables): one with the last testdate for each id/test, and one with the earliest treatmendate for each id/test.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data want;
  set have (drop=treatmendate)
      have (obs=0 
            keep=testdate treatmendate 
            rename=(testdate=last_tdate treatmendate=treatmenstartdate));

  if _n_=1 then do;
    /* Get lookup table for last testdate, by id/test */
    declare hash last_td (dataset:'have (keep=id test testdate rename=(testdate=last_tdate))'
                         ,duplicate:'Replace');
	  last_td.definekey('id','test');
	  last_td.definedata('last_tdate');
	  last_td.definedone();

	/* Get lookup table for first treatmendate, b id/test */
	declare hash strtdate (dataset:'have (keep=id test treatmendate rename=(treatmendate=treatmenstartdate))');
	  strtdate.definekey('id','test');
	  strtdate.definedata('treatmenstartdate');
	  strtdate.definedone();
  end;

  last_td.find();  /* retrieve last_tdate*/
  strtdate.find(); /* retrieve treatmenstartdate*/
  if testdate&amp;lt;=treatmenstartdate and testdate&amp;lt;last_tdate then flag='Y';
  drop last_tdate;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 11 Dec 2016 04:35:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318110#M69675</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-12-11T04:35:13Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318112#M69677</link>
      <description>&lt;P&gt;Sorry. The Treatmentdate&amp;nbsp;&lt;SPAN&gt;15AUG2015.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 11 Dec 2016 05:28:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318112#M69677</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2016-12-11T05:28:32Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318124#M69681</link>
      <description>&lt;PRE&gt;
Yeah. If you don't have big table ,you could try SQL, otherwise try Hash Table.


data have;
input ID         test  $          testdate : date9.      treatmendate : date9.   period;
format testdate treatmendate date9.;
cards;
1           a                          01AUG2015                     15AUG2015                     1
1           b                          02AUG2015                     15AUG2015                      1
1           c                          03AUG2015                     15AUG2015                      1
1           d                          04AUG2015                     15AUG2015                      1
1           e                          11AUG2015                     15AUG2015                       1
1           f                          12AUG2015                     15AUG2015                       1
1           a                          20AUG2015                     15AUG2015                       2
1           b                          21AUG2015                     15AUG2015                       2
1           c                          23AUG2015                     15AUG2015                        2
1           d                          22AUG2015                     15AUG2015                       2
;
run;
proc sql;
create table want as
select *,case when testdate le treatmendate and
exists(select * from have 
where test=a.test and testdate gt treatmendate) then 'Y' 
else ' ' end as flag
 from have as a;
quit;

&lt;/PRE&gt;</description>
      <pubDate>Sun, 11 Dec 2016 12:03:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318124#M69681</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-12-11T12:03:27Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318140#M69687</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Flag earliest test date when a test has at least one test date after treatment end date

Flag earliest date when a test has at
least one test date after treatment end date

I sorted the original have datset by test testdate

HAVE
====

Up to 40 obs from havsrt total obs=10

Obs    TEST     TESTDATE    TREATMENDATE

  1     a      01AUG2015     15AUG2015
  2     a      20AUG2015     15AUG2015

  3     b      02AUG2015     15AUG2015
  4     b      21AUG2015     15AUG2015

  5     c      03AUG2015     15AUG2015
  6     c      23AUG2015     15AUG2015

  7     d      04AUG2015     15AUG2015
  8     d      22AUG2015     15AUG2015

  9     e      11AUG2015     15AUG2015

 10     f      12AUG2015     15AUG2015

WANT
====

Up to 40 obs WORK.WANT total obs=10

Obs    TEST    TESTDATE    TREATMENDATE    FLAG

  1     a        20301         20315        Y    Flag eariest date when test 'a' has at
  2     a        20320         20315             least one testdate after treatment end date

  3     b        20302         20315        Y
  4     b        20321         20315

  5     c        20303         20315        Y
  6     c        20323         20315

  7     d        20304         20315        Y
  8     d        20322         20315

  9     e        20311         20315
 10     f        20312         20315


 WORKING CODE
===============

 do until (last.test);
    if testdate &amp;gt; treatmendate then flg='Y';
 end;
 do until (last.test);
    if first.test and flg='Y' then flag='Y';
    else flag=' ';
 end;


FULL SOLUTION
=============

data have;
input test $ testdate date10. treatmendate date10.;
cards4;
a 01AUG2015 15AUG2015
b 02AUG2015 15AUG2015
c 03AUG2015 15AUG2015
d 04AUG2015 15AUG2015
e 11AUG2015 15AUG2015
f 12AUG2015 15AUG2015
a 20AUG2015 15AUG2015
b 21AUG2015 15AUG2015
c 23AUG2015 15AUG2015
d 22AUG2015 15AUG2015
;;;;
run;quit;


libname wrk "%sysfunc(pathname(work))";
proc sort data=wrk.have out=havsrt;
by test testdate;
run;quit;

data wrk.want;
 retain flg "N";
 do until (last.test);
    set havsrt;
    by test;
    if testdate &amp;gt; treatmendate then flg="Y";
 end;
 do until (last.test);
    set havsrt;
    by test;
    if first.test and flg="Y" then flag="Y";
    else flag=" ";
    output;
 end;
 flg="N";
 drop flg;
run;quit;

&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 11 Dec 2016 17:03:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318140#M69687</guid>
      <dc:creator>rogerjdeangelis</dc:creator>
      <dc:date>2016-12-11T17:03:15Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318141#M69688</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Flag earliest test date when a test has at least one test date after treatment end date

Flag earliest date when a test has at
least one test date after treatment end date

I sorted the original have datset by test testdate

HAVE
====

Up to 40 obs from havsrt total obs=10

Obs    TEST     TESTDATE    TREATMENDATE

  1     a      01AUG2015     15AUG2015
  2     a      20AUG2015     15AUG2015

  3     b      02AUG2015     15AUG2015
  4     b      21AUG2015     15AUG2015

  5     c      03AUG2015     15AUG2015
  6     c      23AUG2015     15AUG2015

  7     d      04AUG2015     15AUG2015
  8     d      22AUG2015     15AUG2015

  9     e      11AUG2015     15AUG2015

 10     f      12AUG2015     15AUG2015

WANT
====

Up to 40 obs WORK.WANT total obs=10

Obs    TEST    TESTDATE    TREATMENDATE    FLAG

  1     a        20301         20315        Y    Flag eariest date when test 'a' has at
  2     a        20320         20315             least one testdate after treatment end date

  3     b        20302         20315        Y
  4     b        20321         20315

  5     c        20303         20315        Y
  6     c        20323         20315

  7     d        20304         20315        Y
  8     d        20322         20315

  9     e        20311         20315
 10     f        20312         20315


 WORKING CODE
===============

 do until (last.test);
    if testdate &amp;gt; treatmendate then flg='Y';
 end;
 do until (last.test);
    if first.test and flg='Y' then flag='Y';
    else flag=' ';
 end;


FULL SOLUTION
=============

data have;
input test $ testdate date10. treatmendate date10.;
cards4;
a 01AUG2015 15AUG2015
b 02AUG2015 15AUG2015
c 03AUG2015 15AUG2015
d 04AUG2015 15AUG2015
e 11AUG2015 15AUG2015
f 12AUG2015 15AUG2015
a 20AUG2015 15AUG2015
b 21AUG2015 15AUG2015
c 23AUG2015 15AUG2015
d 22AUG2015 15AUG2015
;;;;
run;quit;


libname wrk "%sysfunc(pathname(work))";
proc sort data=wrk.have out=havsrt;
by test testdate;
run;quit;

data wrk.want;
 retain flg "N";
 do until (last.test);
    set havsrt;
    by test;
    if testdate &amp;gt; treatmendate then flg="Y";
 end;
 do until (last.test);
    set havsrt;
    by test;
    if first.test and flg="Y" then flag="Y";
    else flag=" ";
    output;
 end;
 flg="N";
 drop flg;
run;quit;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 11 Dec 2016 17:04:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318141#M69688</guid>
      <dc:creator>rogerjdeangelis</dc:creator>
      <dc:date>2016-12-11T17:04:00Z</dc:date>
    </item>
    <item>
      <title>Re: how to assign a flag to a test based on OBS present after treatment date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318766#M69883</link>
      <description>&lt;P&gt;It is easy to do in a single&amp;nbsp;step:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;proc sort;
  by id test testdate;
run;


data want;
  merge have(where=(testdate&amp;gt;treatmendate) in=after) have;
  by id test;
  if first.test and after then flag='Y';
run;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Just remember to put the un-subsetted table last in the MERGE statement, so that the variables overwrite the ones from the subset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Dec 2016 07:36:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-assign-a-flag-to-a-test-based-on-OBS-present-after/m-p/318766#M69883</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2016-12-14T07:36:19Z</dc:date>
    </item>
  </channel>
</rss>

