- DM log 'clear';
- Proc datasets library=work kill nolist;
- quit;
- PROC IMPORT OUT= WORK.XY
- DATAFILE= "C:\Users\Administrator\Desktop\arc\1B.csv";
- RUN;
- PROC IMPORT OUT= WORK.pm
- DATAFILE= "C:\Users\Administrator\Desktop\arc\air\1B_pm.csv";
- RUN;
- PROC IMPORT OUT= WORK.xy_50
- DATAFILE= "C:\Users\Administrator\Desktop\arc\file\1B_50m.csv";
- RUN;
- PROC IMPORT OUT= WORK.xy_100
- DATAFILE= "C:\Users\Administrator\Desktop\arc\file\1B_100m.csv";
- RUN;
- data xy_100; /*删除异常值*/
- set xy_100;
- if a100>10000 or a100=0 then delete;
- else output;
- run;
- data pm;
- set pm;
- timestamppm=time;
- /*put time=time8.;*/
- drop timestamp;
- idpm=_n_;
- run;
- data xy;
- set xy;
- timestampxy=time;
- /*put time=time8.;*/
- idxy=_n_;
- run;
- proc sql noprint;
- create table dimm as select min(time) as min,max(time) as max from pm;
- run;
- proc sql noprint;
- create table dumm as select min(time) as min,max(time) as max from xy;
- run;
- data x;
- set dimm;
- x=min;
- call symput("x",x);
- run;
- data y;
- set dumm;
- y=min;
- call symput("y",y);
- run;
- data have;
- merge Xy Xy_100 PM;
- by time;
- idhave=_n_;
- run;
- data have;
- set have;
- timestamp=time;
- *put time=time8.;
- run;
- data have;
- set have;
- if timestamp<&y. then delete;
- run;
- data bb; /*自动填充*/
- set have;
- run;
- proc sort data=bb;
- by descending time;
- run;
- data cc;
- set bb;
- retain price1;
- if id100^=. then price1=id100;
- if id100=. then id100=price1;
- run;
- proc sort data=cc;
- by time;
- run;
- proc sql noprint;
- create table ave as select distinct id100,avg(PM2_5) as PM2_5 from cc group by id100;
- run;
- data ave;
- set ave;
- if id100=. then delete;
- run;
- proc sort data=cc;
- by id100;
- run;
- data xy_50;
- set xy_50;
- a100=round(a50,100);
- run;
- data final;
- merge xy_100 ave;
- by id100;
- run;
- data final1;
- merge final xy_50;
- by a100;
- run;
- data final1;
- set final1;
- if a50=. then delete;
- drop a100 id100;
- run;
- data final1;
- set final1;
- *timestampxy=time;
- put time=time8.;
- run;
- PROC EXPORT DATA= WORK.final1
- OUTFILE= "C:\Users\Administrator\Desktop\arc\xy_pm\1B_pm_50.csv"
- DBMS=csv;
- RUN;