SAS中文论坛
标题:
怎么同时读进几个EXCEL 文件?
[打印本页]
作者:
shiyiming
时间:
2011-4-24 06:22
标题:
怎么同时读进几个EXCEL 文件?
proc import filename='c:/e1.xls' out=d1 dbms=excel;
getname=yes;
run;
这样读单个的excel,不知道有没有问题。
现在有几个EXCEL文件(e1.xls, e2.xls,e3.xls,...),如何把这些excel文件同时读进一个data里。请高手指教,谢谢。
作者:
shiyiming
时间:
2011-4-24 10:38
标题:
Re: 怎么同时读进几个EXCEL 文件?
filename改成datafile
此论坛这种问题大把答案;例如:[url:1p25zz8n]http://www.mysas.net/forum/viewtopic.php?f=4&t=6962&p=24191&hilit=import#p24191[/url:1p25zz8n]。
你也可以自己搜索看看。
作者:
shiyiming
时间:
2011-4-24 10:44
标题:
Re: 怎么同时读进几个EXCEL 文件?
读单个file时,用 filename 是会出错的,把它改为 datafile 就行了!!
proc import [color=#FF0000:3rnjyzpk]datafile[/color:3rnjyzpk]='c:/e1.xls' out=d1 dbms=excel;
getname=yes;
run;
读多个 excel 文件到一个data时,参照下面给出的一段代码,自己把要更改的地方更改后,调试运行下吧,包括路径,还有那个变量个数 n 的值:
[code:3rnjyzpk]filename yours "F:\"; /*存放excel表的路径*/
%let dir=%str(F:\); /*同上*/
%macro test(filname);
data w;
length f1-fn 8; /*导入表中含有多少的变量就把 n 替换成多少,自己改一下*/
stop;
run;
%let filrf=&filname;
%let did=%sysfunc(dopen(&filrf));/*打开路径下的数据集,并返回一个id 给宏变量 did,注意不是物理的打开*/
%let listname=;
%let memcount=%sysfunc(dnum(&did)); /*记录路径下的excel表个数*/
%if &memcount gt 0 %then %do i=1 %to &memcount;
%let listname=%sysfunc(dread(&did,&i)); /*读取表名及格式 如:e1.xls*/
PROC IMPORT OUT= w_&i
DATAFILE= "&dir.\&listname"
DBMS=Excel REPLACE;
* SHEET="sheet1$"; /*excel表中有多个sheet时可以选择*/
GETNAMES=NO;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
proc append base=w data=w_&i(where=(f1 ne .));run;/*最后完成的是append添加过程*/
%end;
%let rc=%sysfunc(dclose(&did));
%mend;
%test(yours);
[/code:3rnjyzpk]
作者:
shiyiming
时间:
2011-4-28 00:30
标题:
Re: 怎么同时读进几个EXCEL 文件?
thanks a lot.
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2