我正在导入一个带有列标题的文件,其中包含带导入的$符号(例如“Sales $”)。导入的结果似乎将该列重命名为“VAR11”。
proc import out = raw
datafile="example.xlsx"
dbms=xlsx replace;
range = "Sheet1$A1:B50";
getnames = yes;
run;
有没有办法继续读取列的名称,但只需删除$符号,这样它就是一个有意义的标题?
答案 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;