SAS名称与空白重命名表
我有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;
首先不这样做。带有空格的变量名称在颈部疼痛。为什么不使用空格的值作为LABEL而不是NAME?
如果你想指定包含空格,那么你需要确保设置
option validvarname=any;
然后在代码生成步骤使用NLITERAL()
函数将字符串用空格转换为有效SAS变量名名称文字以避免语法错误。
call execute(catx('=', nliteral(eng_name),nliteral(eng_name_bl)));
谢谢,汤姆。它he,了,但现在我对新名称中的32个字符有限制。我以后需要将它导出为“用户友好”名称,如果我使用标签,它会起作用吗?标签字符数有限制吗? – user3013203
标签最多可以包含256个字符。我相信PROC EXPORT将允许您使用标签作为生成的Excel文件中的列标题。 – Tom
您可以使用QUOTE()函数来确保您生成的标签语句具有正确引用的标签。如果任何标签值包含'“字符,这一点尤其重要。 – Tom
看起来您在第二次调用执行后没有使用单引号。试试这个:call execute('catx(“=”,'eng_name','eng_name_bl')'); –
它根本不起作用。 – user3013203
你想改变表名或列名吗?请提供生成错误消息的代码的[完整可重现示例](http://www.stackoverflow.com/help/mcve)。 – user667489