#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;
.