我有一些数据集。 (name - table,field - Field1 label =" current.field") 当我做的时候
proc export data=work.table label;
outfile = 'bla bla';
DBMS=Excelcs;
run;
我收到错误:
CLI execute error: [Microsoft][ODBC Excel
Driver] 'current.field' is not a valid name. Make sure that it does not include
invalid characters or punctuation and that it is not too long..
我知道问题出在标签上 - 它包含"。"。但我需要这个标签。有谁知道如何解决这个问题?比你。
答案 0 :(得分:0)
您可以在SAS中执行的一项操作是修改这些标签,以便它们可以与Excel驱动程序很好地配合使用。以下xl_label()
宏将扫描您的表并从标签中删除任何句点(。)。
/* sample data */
data work.table;
label x ='test1.invalid' y='test2.invalid';
x=1; y='age';
run;
%macro xl_label(lib=,ds=);
/* get labels */
ods output variables=vars(keep=variable label);
proc contents data=&lib..ds; run;
data _null_; set vars;
/* modify labels to make them valid for excel */
label=tranwrd(label,'.','_');
/* send to macro variable array */
call symputx(cats('label',_n_)
,"label "!!variable!!'="'!!label!!'";'
,'l');
run;
/* update table metadata */
proc datasets nolist library=&lib;
modify &ds;
%local x;
%let x=1;
%do %while (%symexist(label&x));
&&label&x /* label statements */
%let x=%eval(&x+1);
%end;
%mend;
%xl_label(lib=work, ds=table);
答案 1 :(得分:0)
如果您在Excel(第2行)中需要带有句点(。)的SAS标签,则可以尝试使用此blog post中列出的方法。
只需将label关键字添加到proc导出步骤,如下所示:
/* send data */
PROC EXPORT DATA=&libds OUTFILE=_webout DBMS=&type REPLACE LABEL;
run;