Объедините макропеременные в SAS для переименования столбца

У меня есть несколько макропеременных, которые я хочу объединить, чтобы переименовать столбец в таблице.

%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? Было бы даже лучше, если бы я мог сделать это на шаге proc sql, как показано ниже.

%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;

Спасибо!


person kroach    schedule 12.09.2020    source источник


Ответы (1)


Нет необходимости использовать функции для объединения значений макропеременных. Просто разверните макропеременную, в которой вы хотите использовать значение в создаваемом вами коде.

Итак, если значения ваших макропеременных выглядят так:

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

И вы пишете этот код:

&input_id._&input_group._1

Результат будет

zip_state_1

Обратите внимание на использование ., чтобы сообщить макропроцессору, что _ не является частью имени макропеременной, расширяемой &.

person Tom    schedule 12.09.2020