楼主有个经过若干步骤后生成的数据集,对于数据中的若干列由于其小数位数非常多,需要进行四舍五入保留2位小数。
现在的问题是,每次生成的数据集变量会有不同,现在假设只需要处理第2个至最后一个变量。
/*首先生成一个简化的数据集test*/
data test;
input Item $ A B C;
cards;
Apple 1.234 2.345 3.456
Orange 4.322 6.2345 0.983
Peach 10.682 2.426 7.977
;
run;
/*这里给宏变量赋值,在实际中,这些宏变量是在前几步中赋值的,这里简化处理手工赋值*/
%let numcol = 4;
%let numobs = 3;
%let col2 = A;
%let col3 = B;
%let col4 = C;
/*下面是楼主编的代码,用来对第2到最后一个变量的值四舍五入到0.01*/
%macro roundoff;
%do n = 2 %to &numcol;
data roundoff;
set test;
&&col&n = %sysfunc(round(&&col&n,0.01));
run;
%end;
%mend;
%roundoff
执行的结果总是报错,ERROR: %SYSFUNC 或 %QSYSFUNC 宏函数引用的函数 ROUND 中的参数 1 不是数字。
这个问题该如何解决?
十分感谢!!