|
5#

楼主 |
发表于 2007-12-11 16:20:01
|
只看该作者
Re: 如何用SAS自动导入数据
这个问题不错,代码写给你了,如有疑问可跟我交流
[code:1gwuva3p]
/*
1. 给定1000个excel格式的数据表,都是股票数据。
2. 数据表取名的形式为600100.SS.csv、600073.SS.csv...等,形式很不“整齐”。
3. 如何设计一个SAS的程序,自动将这1000个数据导入,
并将其取名规范化,比如命名为data1,data2,...data1000的形式。
*/
*具体的导入文本文件的宏,实际使用时可根据数据结构自行更改;
%macro LoadSRC(lib,txt,fname,sname);
data &lib..&sname;
infile "&txt.\&fname";
input x;
run;
%mend;
*完成导入功能的宏,可自行设置参数进行使用;
*lib是用来存放数据集的逻辑库;
*txt存放csv文件的目录;
*sname生成的数据集前缀;
*具体使用方式可以参见例子;
%macro LoadDATA(lib,txt,sname);
*读取目录下的文件名信息;
data a1(keep = memname);
rc=filename("mydir","&txt");
did=dopen("mydir");
memcount=dnum(did);
do i = 1 to memcount;
memname = dread(did,i);
output;
end;
run;
*产生程序控制所需要的宏变量;
data _null_;
set a1 end=last;
call symput(cats('memname',_n_),memname);
if last then call symput('memcount',_n_);
run;
*自动导入所有的文件;
%do i = 1 %to &memcount;
%LoadSRC(&lib,&txt,&&memname&i,&sname&i);
%end;
%mend;
*例子:
*假设d:\test下存放的全是对应的csv文件,而且各csv文件中只有一个字段;
%let txt = d:\test;
%LoadDATA(work,&txt,icq);
[/code:1gwuva3p] |
|