Hi @monday89
Here is another approach using PROC SQL:
data have ;
input ID date:mmddyy10. time:time5. volume order;
format date mmddyy10. time time5. datetime datetime22.;
datetime = dhms(date,0,0,time);
datalines ;
1234 1/2/2020 13:12 53.1 1
1234 1/2/2020 20:12 32.9 2
1234 1/3/2020 9:12 23.1 3
4522 3/2/2020 12:19 20.5 1
4522 3/2/2020 14:19 24.1 2
;
run;
option missing="";
proc sql;
create table want as
select a.*,
case when intck("hour",b.datetime,a.datetime) ne 0 then intck("hour",b.datetime,a.datetime) else . end as difference_hour,
case when (a.volume - b.volume) ne 0 then (a.volume - b.volume) else . end as difference_volume
from have as a left join
(select * from have group by ID having order=min(order)) as b
on a.ID=b.ID
order by id, order;
quit;
... View more