- data a;
- input Time $11. PM @ ;
- cards;
- 10:24:51 AM 4
- 10:24:52 AM 5
- 10:24:53 AM 6
- 10:24:54 AM 6
- 10:24:55 AM 5
- 10:24:56 AM 5
- 10:24:57 AM 4
- 10:24:58 AM 4
- 10:24:59 AM 4
- 10:25:00 AM 4
- 10:25:01 AM 4
- 10:25:02 AM 3
- 10:25:03 AM 3
- 10:25:04 AM 3
- 10:25:05 AM 3
- 10:25:06 AM 3
- ;
- run;
- data b;
- set a;
- tim=input(substr(time,1,8),time8.);
- proc sort;by tim pm;
- run;
- proc sql noprint;
- create table dimm as select min(tim) as min,max(tim) as max from b;
- run;
- data dumm;
- set dimm;
- n=ceil((max-min)/10);
- call symput("n",n);
- run;
- data c;
- set b;
- by tim pm;
- retain start;
- if _n_=1 then start=tim;
- do i=1 to &n.;
- if start+10*(i-1)<=tim<=start+10*i then oo=i;
- if start+30*(i-1)<=tim<=start+30*i then ooo=i;
- if start+60*(i-1)<=tim<=start+60*i then oooo=i;
- end;output;
- run;
- proc sql noprint;
- create table want10 as select distinct oo,avg(pm) as pp from c group by oo;
- create table want30 as select distinct ooo,avg(pm) as pp from c group by ooo;
- create table want60 as select distinct oooo,avg(pm) as pp from c group by oooo;
- run;