<?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: generate previous visit's enddate from next visit's startdate -1 in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566662#M159285</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    input id $ line startdate yymmdd10.;
	format startdate yymmdd10.;
datalines;
a 1 2015-06-20
a 2 2015-07-31
a 3 2015-08-27    
b 1 2016-05-01    
b 2 2016-08-02
;
run;

proc sql;
	create table want as select h.*,j.startdate-1 as enddate format=yymmdd10.
		from have as h left join have as j
		on h.id=j.id and h.line=j.line-1;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 17 Jun 2019 18:04:20 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2019-06-17T18:04:20Z</dc:date>
    <item>
      <title>generate previous visit's enddate from next visit's startdate -1</title>
      <link>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566659#M159283</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    input id $ line startdate $10.;
datalines;
    A 1 2015-06-20
    A 2 2015-07-31
    A 3 2015-08-27
    B 1 2016-05-01
    B 2 2016-08-02
;
RUN;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;what I want:&lt;/P&gt;
&lt;P&gt;ID&amp;nbsp; line&amp;nbsp;&amp;nbsp; startdate&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enddate&lt;/P&gt;
&lt;P&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-06-20&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-07-30&lt;/P&gt;
&lt;P&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-07-31&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-08-26&lt;/P&gt;
&lt;P&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-08-27&amp;nbsp;&amp;nbsp;&amp;nbsp; .&lt;/P&gt;
&lt;P&gt;B&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 2016-05-01&amp;nbsp;&amp;nbsp;&amp;nbsp; 2016-08-01&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jun 2019 18:00:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566659#M159283</guid>
      <dc:creator>fengyuwuzu</dc:creator>
      <dc:date>2019-06-17T18:00:55Z</dc:date>
    </item>
    <item>
      <title>Re: generate previous visit's enddate from next visit's startdate -1</title>
      <link>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566662#M159285</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    input id $ line startdate yymmdd10.;
	format startdate yymmdd10.;
datalines;
a 1 2015-06-20
a 2 2015-07-31
a 3 2015-08-27    
b 1 2016-05-01    
b 2 2016-08-02
;
run;

proc sql;
	create table want as select h.*,j.startdate-1 as enddate format=yymmdd10.
		from have as h left join have as j
		on h.id=j.id and h.line=j.line-1;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 17 Jun 2019 18:04:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566662#M159285</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2019-06-17T18:04:20Z</dc:date>
    </item>
    <item>
      <title>Re: generate previous visit's enddate from next visit's startdate -1</title>
      <link>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566669#M159290</link>
      <description>&lt;P&gt;First thing is to define your date variable to have dates and not character strings.&lt;/P&gt;
&lt;P&gt;You can use this trick using an extra SET with FIRSTOBS=2 to create a "look ahead" or "lead" value for start date.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Take care that when you are on the last observation for a group that you not try to use the date from the first observation of the next group by using BY variable processing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input id $ line startdate :yymmdd10.;
  format startdate yymmdd10.;
datalines;
A 1 2015-06-20
A 2 2015-07-31
A 3 2015-08-27
B 1 2016-05-01
B 2 2016-08-02
;

data want ;
  set have ;
  by id;
  set have(firstobs=2 keep=startdate rename=(startdate=enddate)) have(drop=_all_ obs=1);
  if last.id then call missing(enddate);
  if not missing(enddate) then enddate=enddate-1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;Obs    id    line     startdate       enddate

 1     A       1     2015-06-20    2015-07-30
 2     A       2     2015-07-31    2015-08-26
 3     A       3     2015-08-27             .
 4     B       1     2016-05-01    2016-08-01
 5     B       2     2016-08-02             .&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jun 2019 18:18:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566669#M159290</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2019-06-17T18:18:25Z</dc:date>
    </item>
    <item>
      <title>Re: generate previous visit's enddate from next visit's startdate -1</title>
      <link>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566707#M159315</link>
      <description>&lt;P&gt;Thank you Tom and Paige!&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jun 2019 19:47:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/generate-previous-visit-s-enddate-from-next-visit-s-startdate-1/m-p/566707#M159315</guid>
      <dc:creator>fengyuwuzu</dc:creator>
      <dc:date>2019-06-17T19:47:02Z</dc:date>
    </item>
  </channel>
</rss>

