我正在尝试创建一个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;
答案 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
,以便您可以在日志中看到宏执行的结果..