[pre]
data area;
input area : $1. time : mmddyy10. ;
format time mmddyy10.;
datalines;
A 2/1/2007
A 10/11/2008
A 4/21/2009
B 7/2/2008
C 1/21/2008
C 9/12/2009
;
run;
*to get repeated sequence duration1 duration2;
data temp;
set area;
by area;
retain base repeated 0;
if first.area then do;
repeated=not(repeated);
sequence=0;
base=time;
end;
duration1=dif(time);
sequence+1;
duration2=time-base;
drop base;
run;
*to adjust duration1;
data tmp;
set temp;
by area;
if first.area then duration1=0;
run;
*to get duration3 is somewhat complex;
data index;
set tmp;
by area;
if first.area then delete;
keep area time;
run;
data merged;
merge tmp index(rename=(time=t));
by area;
run;
proc format;
value fmt
0,. = 'Truncated';
run;
data result;
set merged;
duration3= t - time;
format duration3 fmt.;
drop t;
run;
proc print noobs;
run;
[/pre]
[pre]
data area;
input area : $1. time : mmddyy10. ;
format time mmddyy10.;
datalines;
A 2/1/2007
A 10/11/2008
A 4/21/2009
B 7/2/2008
C 1/21/2008
C 9/12/2009
;
run;
*to get repeated sequence duration1 duration2;
data temp;
set area;
by area;
retain base repeated 0;
if first.area then do;
repeated=not(repeated);
sequence=0;
base=time;
end;
duration1=dif(time);
sequence+1;
duration2=time-base;
drop base;
run;
*to adjust duration1;
data tmp;
set temp;
by area;
if first.area then duration1=0;
run;
*to get duration3 is somewhat complex;
data index;
set tmp;
by area;
if first.area then delete;
keep area time;
run;
data merged;
merge tmp index(rename=(time=t));
by area;
run;
proc format;
value fmt
0,. = 'Truncated';
run;
data result;
set merged;
duration3= t - time;
format duration3 fmt.;
drop t;
run;
proc print noobs;
run;
[/pre]
proc sql;
create table want as
select l.*,r.duration1 as duration3
from inter as l left join inter as r
on l.rowcount=(r.rowcount+1) and l.address=r.address;
quit;