You could do something with a format to assign the intervals based on datetime ranges, such as the following: data intvls; format datetime datetime.; do datetime = '27FEB15:11:16:23'dt to '28FEB15:11:16:23'dt by 900; start = datetime; end = intnx('second', start, 899); output; end; run; data formats; set intvls; label = _n_; fmtname = 'cstmInt'; type = 'I'; run; proc format cntlin = formats; run; data have; do datetime = '27FEB15:11:16:23'dt to '28FEB15:11:16:23'dt; output; end; run; data want; format datetime datetime.; set have; interval = input(datetime, cstmInt.); nmotion = rannor(5); run; proc sql; SELECT interval 'Interval', min(datetime) AS intStart format datetime. 'First Time', max(datetime) AS intEnd format datetime. 'Last Time', count(*) 'Count', mean(nmotion) 'Mean nmotion' FROM want GROUP BY interval; quit;
... View more