我有2个表:零售我的数据和col_dic作为列名的字典。在col_dic中有2列 - eng_name和eng_name_bl。
所以代码是:
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;
答案 0 :(得分:1)
首先不要这样做。带有空格的变量名称是颈部疼痛。为什么不直接使用带空格的值作为LABEL而不是NAME?
如果您确实要指定包含空格的变量名称,则需要确保设置
option validvarname=any;
然后在代码生成步骤中使用NLITERAL()
函数将带空格的字符串转换为有效的SAS名称文字以避免语法错误。
call execute(catx('=', nliteral(eng_name),nliteral(eng_name_bl)));