data test1;
input id $ date $ time $ bp1 $ bq1;
cards;
AF 20050503 8450800 5800 4
AF 20050503 8451300 5801 36
AF 20050503 8451800 5805 12
AF 20050503 8451800 5805 12
;
data test2;
input id $ date $ time $ ep1 $ eq1;
cards;
AF 20050503 8450600 5800 1
AF 20050503 8450700 5801 3
AF 20050503 8450900 5803 7
AF 20050503 8450900 5804 1
AF 20050503 8451400 5805 12
AF 20050503 8451500 5805 2
AF 20050503 8451600 5805 1
AF 20050503 8451800 5807 1
AF 20050503 8451800 5807 1
;
data test3;
merge test1 test2;
by id date time;
order=_n_;
run;
proc sort data=test3;
by id date descending order;
run;
data test4;
set test3;
by id date descending order;
retain time1 bp2 bq2;
if ^missing(bp1) then do;
time1=time;
bp2=bp1;
bq2=bq1;
end;
else do;
time=time1;
bp1=bp2;
bq1=bq2;
end;
drop time1 bp2 bq2 ;
run;
proc sort data=test4 out=wanted(drop=order) ;
by order;
run;