作者bookface (keep going)
看板Statistics
标题[问题] SAS-巨集内使用IML产生错误讯息
时间Tue Aug 17 00:12:29 2010
在SAS巨集内使用Proc IML产生下列错误讯息
ERROR: (execution) Matrix has not been set to a value.
operation : [ at line 28272 column 99
operands : CUM_DIV_PV, I, DIV
CUM_DIV_PV 758 rows 1 col (numeric)
I 0 row 0 col (type ?, size 0)
搜寻之後仍无法顺利排除此错误
想请问各位先进如何解决此一问题.
我的巨集是要从原本完整dataset中,
透过输入公司代码, 挑出相同公司代码的较小资料集,
之後在针对此较小的资料进行矩阵运算.
下面简易列出我的程式, 希望能够得到先进们的指点, 谢谢!
%MACRO DivPV(Num);
%DO I = 1 %TO &Num;
DATA _NULL_;
set firmlist;
IF _n_= &I Then Do;
CALL SYMPUT('ID', firmid);
END;
RUN;
Data subset;
set fulldata;
where firmid = &ID;
run;
proc IML;
start main;
use subset var _all_ ;
read all into date_S0;
n2 = nrow(date_S0);
cum_div_pv = repeat(0,n2,1);
... 之後的运算都是为了求出cum_div_pv
finish main;
run main;
quit;
%END;
%MEND DivPV;
%DivPV(2138);
run;
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.111.160
1F:推 MmmRrrrX:给你个建议,用巨集作回圈跑iml,很难看出错误在哪。 08/17 00:50
2F:→ MmmRrrrX:先以I等於某个数字,跑一遍程式,比较好看出城是错在哪 08/17 00:51
3F:→ MmmRrrrX:从错误讯息来看,很像是某个矩阵运算过程中不合法。 08/17 00:53
4F:→ MmmRrrrX:不确定问题是不是刚好在省略的那段。 08/17 00:54
5F:推 imaltar:要检查矩阵的运算吧 也许是在矩阵计算的行列不合 08/17 11:58