| 
 | 
Re: 如何用SAS自动导入数据
[quote="zhoubin":jnpsf2bi]这个问题不错,代码写给你了,如有疑问可跟我交流 
 
[code:jnpsf2bi] 
/* 
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:jnpsf2bi][/quote:jnpsf2bi] 
很强大,想问问友友如何达此境界的?! |   
 
 
 
 |