在SAS中串联宏变量以重命名列

在SAS中串联宏变量以重命名列,sas,concatenation,rename,sas-macro,proc-sql,Sas,Concatenation,Rename,Sas Macro,Proc Sql,我有一些宏变量,我想连接在一起,以重命名表中的列 %let input_group = state; %let input_id = zip; data output; set output; rename var1= catx(_, &input_id, &input_group, '1'); run; 在我的输出表中,我想将var1列重命名为zip_state_1。是否可以在SAS数据步骤中执行此操作?如果我能在下面的procsql步骤中完成这项工作,那就更好了 %let

我有一些宏变量,我想连接在一起,以重命名表中的列

%let input_group = state;
%let input_id = zip;

data output;
set output;
rename var1= catx(_, &input_id, &input_group, '1');
run;
在我的输出表中,我想将var1列重命名为zip_state_1。是否可以在SAS数据步骤中执行此操作?如果我能在下面的procsql步骤中完成这项工作,那就更好了

%let input_group = state;
%let input_id = zip;

proc sql;
create table output_2 as
select var1 as catx(_, &input_id, &input_group, '1')
from output_1;

谢谢

无需使用函数连接宏变量的值。只需在要使用生成代码中的值的位置展开宏变量

因此,如果宏变量值如下所示:

%let input_id = zip;
%let input_group = state;
然后你写下这段代码:

&input_id._&input_group._1
结果将是

zip_state_1

注意使用。要让宏处理器知道u不是由&.

展开的宏变量名称的一部分,无需使用函数连接宏变量的值。只需在要使用生成代码中的值的位置展开宏变量

因此,如果宏变量值如下所示:

%let input_id = zip;
%let input_group = state;
然后你写下这段代码:

&input_id._&input_group._1
结果将是

zip_state_1
注意使用。让宏处理器知道u不是由&展开的宏变量名称的一部分