SAS:如何在更改变量值时创建宏以重新运行程序

时间:2017-12-12 10:31:21

标签: sas

我有一个任务是写一个宏来重新运行你的程序"使用变量的不同值来减少该变量的平均值,以便减少第二个变量,该第二个变量依赖于第一个低于某个阈值的变量。然而,我是SAS的新手,也是我在宏观上读到的内容,我没有看到任何明显符合此描述的内容。

1 个答案:

答案 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;