Есть несколько вариантов. Вот один «безопасный» вариант и один «небезопасный» вариант.
Безопасный вариант:
Написать макрос, чтобы переименовать переменную с его именем без _1A .; Аргументы: var = имя переменной, len = длина желаемого конечного имени переменной;
%macro rename_shorter(var=,len=);
&var. = %substr(&var.,1,&len.)
%mend rename_shorter;
Создать список звонков из словаря.
proc sql;
select cats('%rename_shorter(var=',name,',len=',length(name)-3,')')
into :renamelist separated by ' '
from dictionary.columns
where libname='SASHELP' and upcase(memname)='CLASS';
quit;
Позвоните, что список;
data want;
set sashelp.class(rename=(&renamelist.));
run;
небезопасным вариант, в том смысле, что он не проверяет, что все выровнены правильно, является
proc sql;
create table want as
select * from have_namedright H
outer union corr
select * from have_namedwrong W
;
quit;
Обратите внимание, что этот код не работает, как-то, потому что некоторые из имена столбцов - всего три символа. –