我有一个任务是写一个宏来重新运行你的程序"使用变量的不同值来减少该变量的平均值,以便减少第二个变量,该第二个变量依赖于第一个低于某个阈值的变量。然而,我是SAS的新手,也是我在宏观上读到的内容,我没有看到任何明显符合此描述的内容。
答案 0 :(得分:0)
这被证明是一个非常有趣的问题。我还没有找到任何预先构建的方法,但也许这样的事情可能是:
首先我定义规范,例如。距离你想要的距离。
%macro do_calc(value);
%let res=%eval(&value.-1);
%mend;
此时应该找到迭代方向。最有可能只是推导出你的函数,并将数字推到维度上。像
这样的东西%macro update_vars (var1, var2);
%let var1=&var1. + 0.1;
%let var2=&var2. - 0.2;
%mend;
实际迭代非常简单。
%macro iterate;
%let res=110;
%let i=1;
%do %while(&res.>100 or i>1000);
%do_calc(&res.); /*Add var1, var2); here */
%update_vars(&var1.,&var2.);
%put &res.;
%let i= %eval(&i.+1); /*failsafe*/
%end;
%mend;
%iterate;