- %macro heng(all,x);
- %do i=1 %to &all;
- var&i=var&i*&x;
- %end;
- %mend;
- data wang.cov1;
- set wang.cov nobs=all;
- %heng(all,x);
- run;
程序中的cov数据集在附件中有截图,名字为cov.png
我程序的目的是希望对于cov数据集得每一行观测中的所有var开头的变量都乘以该观测的x,比如var1=var1*x。输出结果截图也在附件中,名字为结果.png
由于对于cov中的var的数目并不知道,故用宏变量来做。
但是上述程序运行出来有问题,
log显示为:
1356 data wang.cov1;
1357 set wang.cov nobs=all;
1358 %heng(all,x);
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &zongshu
ERROR: %TO 值(%DO I 循环中)无效。
ERROR: 宏 HENG 将终止执行。
当我把上述程序中的%heng(all,x);语句改为%heng(2,x);时,就可以运行得到正确结果,(对于例子中的数据all=2)
请问这是为什么啊...应该如何解决啊 谢谢了!