抛一块砖,希望各位大侠帮忙
这是我自己写的,完全达不到我想要的结果,并且还很有问题,呵呵
data city;
set test; ;
date = MDY (month,day,year);
format date date9.;
run;
proc sort data=city
by city date;
run;
data range;
retain from to;
set city end=lastobs;
if _n_=1 then from=date;
if lastobs then do;
to = date;
output;
end;
run;
data dates;
set range;
date=from;
do while (date<= to);
output;
date=intnx('day', date,1);
end;
keep date;
run;
proc standard;
merge city dates;
by city;
run;
proc expand data=city out=temp from=day method=join;
var data;
by city;
id date;
run;
我想法是先把日期转换成sas的日期格式,然后把不连续的时间补成连续的,然后用expand差值。
可是出现的问题,在生成新的时间序列表的时候,只生成一个日期序列,并没有按照每个城市生成时间序列。expand后还会生成一列1960年的日期值,而且并没有差值……
我不知道怎么改,希望各位指点。谢谢!