<?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: start and stop dates for earlier timepoint in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627369#M185187</link>
    <description>&lt;P&gt;Thanks for posting sample data and the desired result.&lt;/P&gt;
&lt;P&gt;Going forward ideally post sample data in the form of a SAS datastep as done in below code. This gives us the opportunity to spend the time on providing a solution to you instead of preparing the source data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let sv_datestyle=%sysfunc(getoption(datestyle,keyexpand));
options datestyle=mdy;
data have;
  infile datalines dsd truncover;
  input 
    patientid $ method $ 
    start_date:anydtdtm. stop_date:anydtdtm. 
    weight day;
  format start_date stop_date datetime20.;
  datalines;
1,2,1/2/19 11:20,1/2/19 20:12,21,1
1,3,1/2/19 18:15,1/2/19 20:12,10,1
1,2,1/3/19 1:00,1/3/19 21:01,10,2
2,2,1/4/19 9:12,1/4/19 14:01,12,1
2,2,1/5/19 9:16,1/5/19 14:01,12,1
;
options &amp;amp;sv_datestyle;

proc sort data=have;
  by patientid start_date stop_date;
run;

data want(drop=_:);
  merge have
        have(firstobs=2
             keep=patientid start_date 
             rename=(patientid=_id start_date=_start)
            );

  format new_start_date new_stop_date datetime20.;
  new_start_date=start_date;
  new_stop_date=stop_date;

  if patientid=_id and stop_date&amp;gt;_start then 
    new_stop_date=_start;
run; 

proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 26 Feb 2020 01:37:30 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2020-02-26T01:37:30Z</dc:date>
    <item>
      <title>start and stop dates for earlier timepoint</title>
      <link>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627361#M185180</link>
      <description>&lt;P&gt;I have the following dataset&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;WHat I want to do is PER Patient PER DAY, if two stop date/times are the same, then I would like to make the second date/time as the new stop date time for the previously record BUT second start and stop date remain the same. If there are no same stop dates, then keep the original&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="403"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;patientid&lt;/TD&gt;
&lt;TD width="64"&gt;method&lt;/TD&gt;
&lt;TD width="99"&gt;start_date&lt;/TD&gt;
&lt;TD width="84"&gt;stop_date&lt;/TD&gt;
&lt;TD width="64"&gt;weight&lt;/TD&gt;
&lt;TD width="28"&gt;day&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/2/19 11:20&lt;/TD&gt;
&lt;TD&gt;1/2/19 20:12&lt;/TD&gt;
&lt;TD&gt;21&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1/2/19 18:15&lt;/TD&gt;
&lt;TD&gt;1/2/19 20:12&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/3/19 1:00&lt;/TD&gt;
&lt;TD&gt;1/3/19 21:01&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/4/19 9:12&lt;/TD&gt;
&lt;TD&gt;1/4/19 14:01&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/5/19 9:16&lt;/TD&gt;
&lt;TD&gt;1/5/19 14:01&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="607"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;patientid&lt;/TD&gt;
&lt;TD width="64"&gt;method&lt;/TD&gt;
&lt;TD width="99"&gt;start_date&lt;/TD&gt;
&lt;TD width="84"&gt;stop_date&lt;/TD&gt;
&lt;TD width="64"&gt;weight&lt;/TD&gt;
&lt;TD width="28"&gt;day&lt;/TD&gt;
&lt;TD width="103"&gt;new_start_date&lt;/TD&gt;
&lt;TD width="101"&gt;new_stop_date&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/2/19 11:20&lt;/TD&gt;
&lt;TD&gt;1/2/19 20:12&lt;/TD&gt;
&lt;TD&gt;21&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1/2/19 11:20&lt;/TD&gt;
&lt;TD&gt;1/2/19 18:15&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;1/2/19 18:15&lt;/TD&gt;
&lt;TD&gt;1/2/19 20:12&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1/2/19 18:15&lt;/TD&gt;
&lt;TD&gt;1/2/19 20:12&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/3/19 1:00&lt;/TD&gt;
&lt;TD&gt;1/3/19 21:01&lt;/TD&gt;
&lt;TD&gt;10&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/3/19 1:00&lt;/TD&gt;
&lt;TD&gt;1/3/19 21:01&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/4/19 9:12&lt;/TD&gt;
&lt;TD&gt;1/4/19 14:01&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1/4/19 9:12&lt;/TD&gt;
&lt;TD&gt;1/4/19 14:01&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;1/5/19 9:16&lt;/TD&gt;
&lt;TD&gt;1/5/19 14:01&lt;/TD&gt;
&lt;TD&gt;12&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1/5/19 9:16&lt;/TD&gt;
&lt;TD&gt;1/5/19 14:01&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have no idea how to start this! &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 26 Feb 2020 00:16:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627361#M185180</guid>
      <dc:creator>monday89</dc:creator>
      <dc:date>2020-02-26T00:16:34Z</dc:date>
    </item>
    <item>
      <title>Re: start and stop dates for earlier timepoint</title>
      <link>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627369#M185187</link>
      <description>&lt;P&gt;Thanks for posting sample data and the desired result.&lt;/P&gt;
&lt;P&gt;Going forward ideally post sample data in the form of a SAS datastep as done in below code. This gives us the opportunity to spend the time on providing a solution to you instead of preparing the source data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let sv_datestyle=%sysfunc(getoption(datestyle,keyexpand));
options datestyle=mdy;
data have;
  infile datalines dsd truncover;
  input 
    patientid $ method $ 
    start_date:anydtdtm. stop_date:anydtdtm. 
    weight day;
  format start_date stop_date datetime20.;
  datalines;
1,2,1/2/19 11:20,1/2/19 20:12,21,1
1,3,1/2/19 18:15,1/2/19 20:12,10,1
1,2,1/3/19 1:00,1/3/19 21:01,10,2
2,2,1/4/19 9:12,1/4/19 14:01,12,1
2,2,1/5/19 9:16,1/5/19 14:01,12,1
;
options &amp;amp;sv_datestyle;

proc sort data=have;
  by patientid start_date stop_date;
run;

data want(drop=_:);
  merge have
        have(firstobs=2
             keep=patientid start_date 
             rename=(patientid=_id start_date=_start)
            );

  format new_start_date new_stop_date datetime20.;
  new_start_date=start_date;
  new_stop_date=stop_date;

  if patientid=_id and stop_date&amp;gt;_start then 
    new_stop_date=_start;
run; 

proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 26 Feb 2020 01:37:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627369#M185187</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2020-02-26T01:37:30Z</dc:date>
    </item>
    <item>
      <title>Re: start and stop dates for earlier timepoint</title>
      <link>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627448#M185241</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/303622"&gt;@monday89&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is an approach to do this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input patientid method start_date:anydtdtm. stop_date:anydtdtm. weight day;
	format start_date stop_date datetime20.;
	datalines;
1	2	1/2/19 11:20	1/2/19 20:12	21	1
1	3	1/2/19 18:15	1/2/19 20:12	10	1
1	2	1/3/19 1:00	1/3/19 21:01	10	2
2	2	1/4/19 9:12	1/4/19 14:01	12	1
2	2	1/5/19 9:16	1/5/19 14:01	12	1
;
run;

proc sort data=have out=have_sorted;
	by patientid start_date;
run;

data have2;
	merge have_sorted
		  have_sorted(keep=patientid start_date firstobs=2 
					  rename=(patientid=_patientid start_date=_start_date));

	format new_stop_date datetime20.;
	if patientid=_patientid and _start_date &amp;lt; stop_date then new_stop_date=_start_date;
	else new_stop_date=stop_date;

	rename start_date=new_start_date;
	drop stop_date _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Capture d’écran 2020-02-26 à 10.36.34.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/36400i9996D603DDB981B5/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Capture d’écran 2020-02-26 à 10.36.34.png" alt="Capture d’écran 2020-02-26 à 10.36.34.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 26 Feb 2020 09:36:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/start-and-stop-dates-for-earlier-timepoint/m-p/627448#M185241</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-02-26T09:36:52Z</dc:date>
    </item>
  </channel>
</rss>

