SAS宏创建可变比率

时间:2014-08-04 17:46:49

标签: sas sas-macro

我正在尝试创建一个SAS宏,我可以调用它来计算变量的比率。以下是我如何定义比率并在SAS数据集中使用的方法。我收到了错误。我做错了什么?感谢。

%macro ratio(num, den, ratio);
%if &den = . %then &ratio = -999999;
%else %if &den = 0 %then &ratio = -999998;
%else %if &num = . %then &ratio = -999997;
%else &ratio = &num/&den;
%mend ratio; 

data model_data;
set mysas.model_data;
 call %ratio(var1,var2,ratio_var1_to_var2);
run;

1 个答案:

答案 0 :(得分:2)

解释宏语言的目的:SAS(主要)用于创建SAS代码(它写入文本)。然后随后执行此SAS代码,例如执行计算。

所以在这种情况下我们需要使用宏来编写datastep(SAS)代码 - “if / then”,而不是“%if /%then”。

尝试:

options mprint;
%macro ratio(num, den, ratio);
   if &den = . then &ratio = -999999;
   else if &den = 0 then &ratio = -999998;
   else if &num = . then &ratio = -999997;
   else &ratio = &num/&den;
%mend ratio; 

data model_data;
set mysas.model_data;
   %ratio(var1,var2,ratio_var1_to_var2)
run;

我添加了options mprint,以便您可以在日志中看到宏执行的结果..