SAS proc导入列名称有美元符号$

时间:2018-02-12 04:22:32

标签: import sas dollar-sign

我正在导入一个带有列标题的文件,其中包含带导入的$符号(例如“Sales $”)。导入的结果似乎将该列重命名为“VAR11”。

proc import out = raw
    datafile="example.xlsx" 
    dbms=xlsx replace;
    range = "Sheet1$A1:B50";
    getnames = yes;
run;

有没有办法继续读取列的名称,但只需删除$符号,这样它就是一个有意义的标题?

1 个答案:

答案 0 :(得分:0)

如果唯一的问题名称是那种格式,那么你应该能够读取它,然后使用标签重命名变量。因此,将名称和标签放入数据集中。您可以查询字典表,使用proc内容,也可以使用PROC TRANSPOSE。

proc transpose data=raw (obs=0) out=names ;
  var _all_ ;
run;

现在将oldname = newname对列表放入一个宏变量中。

proc sql noprint ;
  select catx('=',_name_,translate(trim(compress(_label_,'$')),'_',' '))
    into :renames separated by ' '
  from names
  where upcase(_name_) ne upcase(substrn(_label_,1,32))
  ;
quit;

然后,您可以在RENAME语句或RENAME = dataset选项中使用它。

data renamed;
  set raw(rename=(&renames)) ;
run;