SAS重命名表,其名称为空格

时间:2016-12-06 16:33:55

标签: sas rename

我有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;

1 个答案:

答案 0 :(得分:1)

首先不要这样做。带有空格的变量名称是颈部疼痛。为什么不直接使用带空格的值作为LABEL而不是NAME?

如果您确实要指定包含空格的变量名称,则需要确保设置

option validvarname=any;

然后在代码生成步骤中使用NLITERAL()函数将带空格的字符串转换为有效的SAS名称文字以避免语法错误。

call execute(catx('=', nliteral(eng_name),nliteral(eng_name_bl)));