如何在SAS

时间:2018-07-05 13:34:22

标签: macros sas

我正在通过将when语句作为宏变量的情况进行参数化,然后将这些语句随后注入另一个宏中。因此,我需要将字符串转换为全局变量,但正在努力掩盖所有内容。我的代码的简化版本如下所示:

%macro test();

%let x_var = 

case when var = 'Red' then 1
when var = 'Black***' then 2
when var = 'Deep Purple' then 3
else 4
end as var_sort

;

%global var = %nrbquote(&x_reg.);

%mend;

%test;

...但是,由于我收到该命令的日志错误,因此无法掩盖所有内容:

ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name '.
ERROR: Invalid symbolic variable name '.
ERROR: Invalid symbolic variable name 1.

任何人都可以提出修复建议吗?尝试掩盖特殊字符时,总是会感到困惑,因为这是正确的使用方法。

谢谢

1 个答案:

答案 0 :(得分:3)

%global语句用于定义宏变量(符号)。如果要为其分配值,请使用%let语句。

%global var ;
%let var = %nrbquote(&x_reg.);

如果要将var设置为字面&_rx_reg.,请使用数据步骤。

data _null_;
  call symputx('var','&x_reg.','g');
run;