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

#sas #concatenation #rename #sas-macro #proc-sql

#sas #объединение #переименовать #sas-макрос #proc-sql

Вопрос:

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

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

data output;
set output;
rename var1= catx(_, amp;input_id, amp;input_group, '1');
run;
  

В моей выходной таблице я хочу переименовать столбец var1 в zip_state_1. Возможно ли это сделать в SAS datastep? Было бы еще лучше, если бы я мог сделать это на шаге proc sql, как показано ниже.

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

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

Спасибо!

Ответ №1:

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

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

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

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

 amp;input_id._amp;input_group._1
  

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

 zip_state_1
  

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