全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4504 14
2011-07-22
悬赏 50 个论坛币 已解决
%macro mm;
proc iml;
x={4, 6, 7,5 ,6,7,3,8,2,3};
sum=5;
y=j(sum,1,0);
%do i=1 %to ∑
y[&i]=x[&i];
%end;
print y;
quit;%mend mm;
%mm;run;
这个程序是错的,日志窗口显示:WARNING: 没有解析符号引用 SUM。
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &sum
ERROR: %TO 值(%DO I 循环中)无效。
ERROR: 宏 MM 将终止执行。
我知道是SUM的问题,它不是宏变量,如何把他转换成宏变量,以便在%do i=1 %to  ∑中使用呢?
当然这里不用宏也是可以的,只要修改为do i=1 to sum;y[&]=x;end;也是可以的,但现在我关心的是如何把SUM转换成宏变量,请高手赐教。

最佳答案

ntsean 查看完整内容

在 sum=5 后面加上这么一句 call symput("sum",char(sum)); 就可以了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-7-22 09:52:14
在 sum=5 后面加上这么一句

call symput("sum",char(sum));

就可以了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-7-22 09:57:43
好多论坛币。。。
用宏变量定义sum不就好了。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-7-22 10:04:20
你还是没有弄懂我的意思,实际上这个程序是我的某个程序一个部分,变量SUM是事前不知道,通过前面的程序计算出来的,不能事前制定,所以才有这个问题,在后续的程序中,怎样把SUM转换成宏变量。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-7-22 10:12:18
%macro mm;
data _null_;
sum=.....用来计算sum;
call symput('sum',sum);
run;

proc iml;
x={4, 6, 7,5 ,6,7,3,8,2,3};
y=j(&sum.,1,0);
%do i=1 %to ∑
y[&i]=x[&i];
%end;
print y;
quit;%mend mm;
%mm;run;

如果是在iml里面计算sum,我再研究研究。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-7-22 10:14:13
不知道你sum的计算公式是啥,想怎么计算
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群