Во-первых, неясно, говорите ли вы об операторе rename
в proc datasets
или в шаге данных.Если вам не нужно ничего делать с данными, вы должны обязательно использовать для этого наборы данных proc, потому что в противном случае (на шаге данных) вы без необходимости читаете / записываете каждую запись в наборе данных, просто чтобы изменить имена переменных.
Если вы используете шаг данных, просто используйте
rename col1-col15=new1-new15;
Я не уверен, что вы можете использовать этот ярлык в наборах данных proc.Что подводит нас к вашему зацикленному вопросу.Если вы не делаете это много раз или динамически, то, вероятно, так же просто скопировать / вставить код 15 раз.Вот способ сгенерировать нужный вам оператор, поместить его в макропеременную и использовать эту макропеременную в операторе переименования:
data _null_;
length myVar $ 1000;
*myVar='';
do i=1 to 15;
myVar=catx(' ',myVar,' ',cats('col',i,'=','new',i));
end;
call symput('rename',myVar);
run;
%put &rename;
proc datasets library=mylibrary;
modify mydataset;
rename &rename;
run;