Macros 如何在SAS中屏蔽此字符串中的所有字符
我将case-when语句作为宏变量,然后将其注入另一个宏,从而对一些代码进行参数化。因此,我需要将字符串转换为全局变量,但我正在努力屏蔽所有内容。我的代码的简化版本如下所示:Macros 如何在SAS中屏蔽此字符串中的所有字符,macros,sas,Macros,Sas,我将case-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 =
%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.
请问有人能给我一个建议吗?当我试图屏蔽特殊字符时,我总是有点困惑,哪种方法是正确的
感谢使用
%global
语句定义宏变量(符号)。如果要为其赋值,请使用%let
语句
%global var ;
%let var = %nrbquote(&x_reg.);
如果要将var
设置为字面意义上的&\u rx\u reg.
,则使用数据步骤
data _null_;
call symputx('var','&x_reg.','g');
run;
%global
语句用于定义宏变量(符号)。如果要为其赋值,请使用%let
语句
%global var ;
%let var = %nrbquote(&x_reg.);
如果要将var
设置为字面意义上的&\u rx\u reg.
,则使用数据步骤
data _null_;
call symputx('var','&x_reg.','g');
run;
X_VAR中没有需要屏蔽的内容。您创建了一个名为
X_VAR
的宏变量,然后对全局宏变量使用X_reg
?此外,格式可能有助于取代case/if-then逻辑。它更简单,不需要宏。X_VAR中没有任何东西需要屏蔽。您创建一个名为X_VAR
的宏变量,然后对全局宏变量使用X_reg
?此外,格式可能有助于取代case/if-then逻辑。它更简单,不需要宏。