SAS中文论坛
标题:
求助:导入并合并大量数据集
[打印本页]
作者:
shiyiming
时间:
2008-11-14 10:50
标题:
求助:导入并合并大量数据集
求助:导入并合并大量数据集
因工作需要,有大量同格式EXCEL文档,取名已经批量改为s1.xls s2.xls s3.xls ... s52.xls。
已经用宏命令批量导入成数据集s1 s2 s3 ... s52。
现需要用
data NewData;
set s1 s2 s3 ... s52;
run;
来合并入一个新数据集NewData。
我不希望输入52个数据集名称,如何用宏和循环来完成
“set s1 s2 s3 ... s52;”
这个语句呢。
谢谢兄弟姐妹们了。
<!-- e --><a href="mailto:liurd@swufe.edu.cn">liurd@swufe.edu.cn</a><!-- e -->
作者:
shiyiming
时间:
2008-11-14 10:59
标题:
Re: 求助:导入并合并大量数据集
[code:gb0i4pzh]%macro a(num);
data class;
set %do i=1 %to &num;
class&i
%end;
;
run;
%mend;
%a(2);[/code:gb0i4pzh]
作者:
shiyiming
时间:
2008-11-14 23:29
标题:
Re: 求助:导入并合并大量数据集
兄弟,谢谢了。
我发现宏有点不好学哦。
作者:
shiyiming
时间:
2008-11-16 17:10
标题:
Re: 求助:导入并合并大量数据集
分两步:
第一步先生成一个文件,其变量是name,值为s1 s2...s52;
[code:35trujqd]data tem(keep=name);
x=0;
do i=1 to 52;
x=x+1;
name='s'||trim(left(put(x,6.)));
output;
end;
run;[/code:35trujqd]
第二步:编写Macro从外部导入excel文件。
[code%macro in(name=);
PROC IMPORT OUT= &name
DATAFILE= "[color=#4040FF:35trujqd]F:\EXCEL FILES[/color:35trujqd]\&name..xls" /*\&name..xls之前的路径你自己设定,&name..xls不可改变*/
DBMS=EXCEL REPLACE;
SHEET="Sheet1$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
%mend;[/code]
第三步:调用宏
[code:35trujqd]data _null_;
set tem;
call execute('%in(name= '||name||' )');
run;[/code:35trujqd]
第四部:用二楼的方法将导入的sas文件合并
作者:
shiyiming
时间:
2008-11-25 11:27
标题:
Re: 求助:导入并合并大量数据集
如果各个数据集的名称没有规律又该怎么做呢?
作者:
shiyiming
时间:
2008-11-25 11:37
标题:
Re: 求助:导入并合并大量数据集
将你的表放在一个自己建立的库里面,然后从字典里面去读取所有表名到红变量
接着就是set红变量
作者:
shiyiming
时间:
2008-11-25 16:59
标题:
Re: 求助:导入并合并大量数据集
可以这样处理:
%macro names(name,number);
%do n=1 %to &number;
PROC IMPORT OUT= &name&n
DATAFILE= "数据来源地址"
DBMS=EXCEL REPLACE;
SHEET="Sheet1$";
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
%end;
%mend names;
%names(s,59);
run;
%macro merge(number);
data b;
set %do i=1 %to &number;
s&i
%end;
;
run;
%mend merge;
%merge(52);
run;
作者:
shiyiming
时间:
2008-11-25 22:20
标题:
Re: 求助:导入并合并大量数据集
可以用filename中的pipe把指定路径下的文件名得到,然后写个宏依次读取这个文件名列表中的文件就可以了,不用看他的文件有多少。
作者:
shiyiming
时间:
2008-11-26 15:36
标题:
Re: 求助:导入并合并大量数据集
当数据集很多很大时时,楼上的做法把所有的数据集全部导入,可能占用很大的内存,不如每次导入一个,跟前一个合并,这样内存中就只有已经合并了的数据集和要导入的数据集。应该会节省很多空间的
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2