У меня есть 2 таблицы: розничная торговля с моими данными и col_dic в качестве словаря для имен столбцов. В col_dic есть 2 столбца - eng_name и eng_name_bl.SAS переименовать таблицу с именем с пробелами
Так-й код:
data _null_;
set col_dic end = last;
if _n_ eq 1 then call execute('proc datasets nolist lib=work; modify retail; rename');
call execute(catx('=', eng_name,eng_name_bl));
if last then call execute(';quit;');
run;
После выполнения протокола дает ошибку, когда он хочет «=» после заготовки в новом имени столбца. Как я могу избежать этого?
Пример, который делает работу:
data col_dic;
length eng_name eng_name_bl $20;
eng_name = 'AGE';
eng_name_bl = 'AGE_FIX';
output;
eng_name = 'HEIGHT';
eng_name_bl = 'HEIGHT_FIX';
output;
run;
data class;
set sashelp.class;
run;
data _null_;
set col_dic end = last;
if _n_ eq 1 then call execute('proc datasets nolist lib=work; modify class; rename');
call execute(catx('=', eng_name,eng_name_bl));
if last then call execute(';quit;');
run;
Похоже, что вы не использовали одиночную кавычку после выполнения второго вызова. Попробуйте это: call execute ('catx ("=",' eng_name ',' eng_name_bl ')'); –
он вообще не работает. – user3013203
Вы пытаетесь изменить имя таблицы или имя столбца? Пожалуйста, предоставьте [полный воспроизводимый пример] (http://www.stackoverflow.com/help/mcve) кода, который генерирует сообщение об ошибке. – user667489