楼主: burnpark
14115 21

[程序分享] sas批量导入 [推广有奖]

  • 1关注
  • 2粉丝

讲师

21%

还不是VIP/贵宾

-

威望
0
论坛币
2980 个
通用积分
6.9000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4279 点
帖子
131
精华
0
在线时间
591 小时
注册时间
2009-3-17
最后登录
2023-3-5

1论坛币
请问一下,
我要把D:\burn文件夹里的所有excel文件导入到sas里,而每个excel文件里又有很多sheet,这种情况怎么批量导入啊?宏要怎么写?

关键词:批量导入 EXCEL sheet xcel exce SAS 批量导入
沙发
醉_清风 发表于 2010-2-11 13:20:53 |只看作者 |坛友微信交流群
%macro A;
%do i=1 %to 10;
PROC IMPORT DATAFILE="D:\burn.xls"
OUT=temp01_&i DBMS=EXCEL2000 REPLACE;
   SHEET="&i";
   GETNAMES=YES;
RUN;
%end;
%mend;
%A

试试看吧
从来不需要想起 永远也不会忘记

使用道具

藤椅
jingyongting 发表于 2010-2-11 15:31:05 |只看作者 |坛友微信交流群
通过SAS宏实现自动导入批量数据
filename folder pipe 'dir C:\temp /b'; /*指定待获取文件名的文件夹*/
data file_list;
length fname $13.; /*设定文件名的长度及变量名*/
infile folder truncover;  /* 获取文件名 */
input fname $13.; /* 将文件名写入fname变量中*/
call symput ('num_files',_n_);
/* 将文件数量保存到宏变量num_files中*/
stockcode=substr(fname,1,6);
/*获取股票代码*/
location=substr(fname,8,2);
/*获取股票交易所代码*/
run;
/*创建宏列别*/
data importcsv;
set file_list;
filename= trim(fname);
a='%importcsv(';
b=',';
c=')';
file "d:\temp\port.txt";
put a $ location $ b $ stockcode $ b $ filename $c;
run;
/*导入数据*/

%macro importcsv(location,stockcode,filename);
data &location.&stockcode;
/*Rember to use double */
infile "c:\temp\&filename" delimiter =',' MISSOVER DSD firstobs=2;
input stockcode $ symbol $ date lagclose open high low close volumn money updown average;
format date yymmdd10.;
informat date yymmdd10.;
run;
%mend;
%include "D:\temp\port.txt";
已有 1 人评分热心指数 收起 理由
crackman + 1 热心解答

总评分: 热心指数 + 1   查看全部评分

使用道具

板凳
ericxmu 发表于 2010-2-11 16:05:30 |只看作者 |坛友微信交流群
你这是ROKI的吧。。。。

使用道具

报纸
soporaeternus 发表于 2010-2-11 16:29:21 |只看作者 |坛友微信交流群
pipe接口获取文件名列表,按列表依次循环用libname到XLS文件......

使用道具

地板
roki 在职认证  发表于 2010-5-15 21:13:52 |只看作者 |坛友微信交流群
呵呵,程序本来就是用来分享的。欢迎大家转贴。原贴地址:http://www.analysts.org.cn/showtopic-127.aspx

使用道具

7
sushe1527 发表于 2010-5-15 22:43:47 |只看作者 |坛友微信交流群
额写过这个 ,就是sheet中如果有“L”这个字符会被压缩掉,数据集名字会少“L”字符,一直没去掉这个瑕疵

使用道具

8
roki 在职认证  发表于 2010-5-16 10:48:59 |只看作者 |坛友微信交流群
批量导入CSV文件不存在 sheet的问题,如果批量导入EXCEL文件使用PROC IMPORT无法定义输入格式和输出格式,因此我们一般都不用EXCEL作为源数据文件,尤其涉及时间变量。
你说的sheet中的L是不是sheet name中包含L 字符?如果是的话,我倒没有遇到这个问题。
7# sushe1527

使用道具

9
sushe1527 发表于 2010-5-16 11:08:09 |只看作者 |坛友微信交流群
roki 发表于 2010-5-16 10:48
批量导入CSV文件不存在 sheet的问题,如果批量导入EXCEL文件使用PROC IMPORT无法定义输入格式和输出格式,因此我们一般都不用EXCEL作为源数据文件,尤其涉及时间变量。
你说的sheet中的L是不是sheet name中包含L 字符?
7# sushe1527
?
楼主说的是导入多个excel其中每个excel有多个sheet,不是单一excel,或者单一CSV,看到了赛?

楼主意思是:文件夹下有多个excel 而且每一个excel可以有多个sheet怎么一起导入?
比方某文件夹下有名字为 111 ,a2 两个excel
每个excel 有3个sheet,名字分别为 2sl ff gg,wwl eel  gg怎么一起导入成数据集。
这里牵涉到起名机制(重名?合法?)和以后的数据集调用问题(取哪一部分?)
一般是生成 t_111_2sl,t_111_ff,t_111_111_gg,t_a2_wwl,t_a2_eel,t_a2_gg这样的
或者是t1,(其中某列变量为_2sl,_ff,_gg),t2(其中某列变量是_wwl _eel _gg)
或者是一个整数据集total,里面有 excelname一列 ,sheetname一列(一般是这种要求多)
但是_2sl和_eel那列会变成_2s和_ee  ,“L”不知道被什么原因压缩掉了 就这样。。

使用道具

10
hongxx 发表于 2010-7-27 18:09:25 |只看作者 |坛友微信交流群
A Case Study of Importing Multiple Worksheet Files

A Case Study of Importing Multiple Worksheet Files.pdf

342.6 KB

abbr_5b106d35a479060faf2287fb1395041a.pdf

495.12 KB

More Tips and Tricks for Creating Multi-Sheet Microsoft Excel Workbooks the Easy Way with SAS

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 20:43