*读取目录下的文件名信息;
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]作者: shiyiming 时间: 2007-12-11 17:27 标题: Re: 如何用SAS自动导入数据 楼上强的!赞一个!作者: shiyiming 时间: 2007-12-20 21:13 标题: Re: 如何用SAS自动导入数据 多谢楼主“zhoubin”,如果可能,邀请楼主加入sas群(11881806)
附带说一句,代码中的“cats”函数在SAS8中好像没有,要9.0版本才有?作者: shiyiming 时间: 2007-12-20 22:15 标题: to yls 是的,cats函数是SAS9新增的:Concatenates character strings and removes leading and trailing blanks
[code:zwwyaovp]data _null_;
x=' The Olym';
y='pic Arts Festi';
z=' val includes works by D ';
a='ale Chihuly.';
result=cats(x,y,z,a);
put result $char.;
run;[/code:zwwyaovp]
你也可以用right、left、trim等函数的组合实现同样的效果。作者: shiyiming 时间: 2007-12-29 14:58 标题: Re: 如何用SAS自动导入数据 楼上的说的确实有道理,
一直用sas9,没考虑到向下兼容的问题,
反正就是生成一些宏变量而已,
变通方法有很多的。作者: shiyiming 时间: 2011-12-9 22:59 标题: Re: 如何用SAS自动导入数据 1. 给定1000个excel格式的数据表,都是股票数据。
2. 数据表取名的形式为stock600100.csv、stock600073.csv...等,形式很不“整齐”。
3. 如何设计一个SAS的程序,自动将这1000个数据导入,
并将其取名为原来文件的名字,比如命名为stock600100,stock600073,...的形式。作者: shiyiming 时间: 2011-12-10 00:22 标题: Re: 如何用SAS自动导入数据 参考该程序
x "dir C:\*.txt /b > C:\all.txt";
%macro daoru(name) ;
PROC IMPORT OUT= WORK.&name
DATAFILE= "E:\a\&name..TXT"
DBMS=TAB REPLACE;
GETNAMES=NO;
RUN;
%mend;
data _null_;
infile "C:\all.txt";
input str $100.;
call execute(compress('%daoru('||scan(str,1,'.')||')'));
run;作者: shiyiming 时间: 2011-12-23 14:21 标题: Re: 如何用SAS自动导入数据 [quote="zhoubin":jnpsf2bi]这个问题不错,代码写给你了,如有疑问可跟我交流
*读取目录下的文件名信息;
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;
*读取目录下的文件名信息;
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;