根绝你的描述:
孤单的我们 发表于 2016-4-19 16:27 
先统一转成相同的格式,再append
几百个文件 还是算了 现在的关键是知道哪几个变量可能类型不一样 但不知道出现在哪个文件
|
提供另一种思路:
先将xls批量转换为SAS data, 存于c:\temp中, 再自动查看dataset中是否包含同名但类型不同的变量(需提前已知变量名),例如已知VAR2, VAR3, VAR4在部分文件中是字符型‘YY-MM-DD' 格式,在另一些文件中是数值型,可用如下程序批量检测是否包含这类变量,如果有,则自动生成数值型 nvar2, nvar3, nvar4,并将原来的变量drop掉。
libname testlib "C:\TEMP";
proc sql;
create table test01 as
select distinct memname
from sashelp.vcolumn
where libname='TESTLIB';
quit;
data _null_;
set test01 end=eof nobs=count;
call symputx('data'||left(_n_), strip(memname));
if eof then call symput('nobs', left(count));
run;
libname testlib1 "C:\TEMP1";
%macro adjustdata;
%do i=1 %to &nobs;
data testlib1.&&data&i;
set testlib.&&data&i;
if varnum(open("testlib.&&data&i", "i"), 'VAR2')>0 then do;
if vtype(var2)='C' then nvar2=input(var2, yymmdd10.); else nvar2=var2; drop var2; end;
if varnum(open("testlib.&&data&i", "i"), 'VAR3')>0 then do;
if vtype(var3)='C' then nvar3=input(var3, yymmdd10.); else nvar3=var3; drop var3; end;
if varnum(open("testlib.&&data&i", "i"), 'VAR4')>0 then do;
if vtype(var4)='C' then nvar4=input(var4, yymmdd10.); else nvar4=var4; drop var4; end;
run;
%mend;
%adjustdata;