|
楼主

楼主 |
发表于 2012-7-16 22:48:32
|
只看该作者
紧急求助,编译器不一致引起的问题!
在数据集ads中存放两个变量,一个是日期date,另一个是num.
是想计算针对每个和它的滞后一段时间的日期之间,对应的num的观测,计算平均值。
但是在计算滞后日期时,出了问题,curDate=date[i,1]是把当前(即date的第i个观测对应的日期)
赋值给curDate, %let lagDate= %sysfunc(intnx('day',curDate,-&width))是计算当前的滞后日期。
但是由于宏编译器是先执行的,此时curDate并没有被赋值,所以出错了。
怎样才能让他顺利执行呢?
各位高手有没有别的方式来做呢?恳请各位给予指点。
[code:2rqu1a7k]
data ads;
do i=1988 to 2012;
do j=1 to 12;
date=mdy(j,1,i);
num=i*j;
output;
end;
end;
format date yymmdd10.;
keep date num;
run;
%let width=20;
%macro tt;
proc iml;
use ads;
read all into date;
close ads;
nrw=nrow(date);
datemx=date[,1];
nummx=date[,2];
firstdate=date[1,1];
lastdate=date[nrw,1];
do i=1 to nrw;
curDate=date[i,1];
%let lagDate= %sysfunc(intnx('day',curDate,-&width));
dateloc=loc(&lagDate<=datemx & datemx<=curDate);
numselect=nummx[dateloc];
nummean=numselect[:,1];
end;
quit;
%mend tt;
%tt;
[/code:2rqu1a7k] |
|