楼主: webgu
30521 72

[学习分享] 关于SAS批量导入EXCEL问题的总结   [推广有奖]

贵宾

学科带头人

95%

还不是VIP/贵宾

-

TA的文库  其他...

Python与统计

SAS与统计

威望
2
论坛币
102549 个
通用积分
3.4687
学术水平
475 点
热心指数
493 点
信用等级
434 点
经验
62369 点
帖子
1555
精华
4
在线时间
2201 小时
注册时间
2009-5-4
最后登录
2025-12-25

初级学术勋章 初级热心勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章

楼主
webgu 发表于 2013-11-28 20:01:32 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
很久没有发原创贴了,一是我自己变懒了,二是似乎坛里也没有以前热闹了。

趁着今天还有一些折腾劲,分享一些关于SAS批量导入EXCEL的技巧。关于这个问题,论坛里其实也有很多前辈们做过讨论,在此,做一个并不成熟的总结。

1. SAS 导入EXCEL的方法
Slide2.JPG

2. 我们可能面临的情形:
Slide4.JPG
3. 相应的解决方案
Slide18.JPG

4. 相应的宏程序
(1)
macro im_excel
  1. %macro im_excel
  2. (/*positional parameters:keep in order*/
  3. /*<libref>.SAS-data-set*/ dsn
  4. ,/*fileref | "filepath"*/file
  5. /*keyword parameters*/
  6. ,/*DBMS types: EXCEL | EXCELCS | XLS | XLSX */ dbms=excel
  7. ,/*replace: (blank) | REPLACE */ replace=replace
  8. ,/*range of spreedsheet:
  9. (blank) | rangename|sheet$ | sheet$UR:LR */range=
  10. ,/*firstobs : N*/ firstobs=1
  11. ,/*obs: N */ obs=1048576
  12. ,/*YES|NO */ getnames=yes
  13. ,/*YES|NO */ scantext=yes
  14. ,/*YES|NO */ scantime=yes
  15. ,/*YES|NO */ usedate=yes
  16. ,/*YES|NO */ mixed=no
  17. );
  18. proc import out=&dsn
  19. datafile=&file
  20. dbms=&dbms &replace;
  21. range="&range";
  22. dbdsopts="firstobs=&firstobs obs=&obs";
  23. getnames=&getnames;
  24. scantext=&scantext;
  25. scantime=&scantime;
  26. usedate=&usedate;
  27. mixed=&mixed;
  28. run;
  29. %mend im_excel;
复制代码
(2)macro im_1m1excel
  1. %macro im_1m1excel(RootPath,FileName,Extension);
  2. libname MyExcel Excel "&RootPath.\&Filename..&Extension";
  3. proc sql noprint;
  4. select catt(trim(libname),'.',quote(trim(memname)),'n')
  5. into: namelist seperated by ' '
  6. from dictionary.tables
  7. where libname in ('MYEXCEL');
  8. quit;
  9. %put &namelist;
  10. data &FileName;
  11. set &namelist;
  12. run;
  13. %mend im_1m1excel;
复制代码

(3)macro  im_m1mexcel
  1. %macro  im_m1mexcel(dir=) ;
  2. filename indata pipe "dir &dir /b";
  3. data FileName;
  4. length fname $20.;
  5. infile indata truncover;
  6. input fname $20.;
  7. dname=scan(fname,1,".");
  8. call symputx(cats('File',_n_),fname);
  9. call symputx(cats('ds',_n_),dname);
  10. call symputx('NumFile',_n_);
  11. run;
  12. %do i=1 %to &NumFile;
  13. proc import out=&&ds&i
  14. datafile="&Dir\&&file&i"
  15. dbms=excel replace;
  16. run;
  17. %end;
  18. %mend;
复制代码
(4)macro ExcelFiles2sas

Snap_2013.11.28 20.11.48_005.png


若觉得有用,小伙伴们请给个好评吧!



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:EXCEL 批量导入 xcel exce cel EXCEL

已有 29 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
YoungHe + 2 + 1 + 1 + 1 精彩帖子
dengdaiwyne + 1 + 1 + 1 精彩帖子
Tigflanker + 5 + 3 + 3 + 3 震撼!
就喜欢马 + 5 + 1 + 1 + 1 精彩帖子
magicjing + 1 + 1 + 1 精彩帖子
润德 + 1 + 1 + 1 精彩帖子
13060563 + 1 + 1 + 2 + 3 好的意见建议
双修阁主の + 1 + 1 + 1 精彩帖子
而归 + 1 + 1 + 1 精彩帖子
vandphe + 5 精彩帖子

总评分: 经验 + 322  论坛币 + 112  学术水平 + 55  热心指数 + 56  信用等级 + 56   查看全部评分

本帖被以下文库推荐

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

沙发
lookslike 发表于 2013-11-28 20:06:22
沙发啊,绝世好贴啊。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
catzitt + 1 + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
webgu 发表于 2013-11-28 20:51:25
lookslike 发表于 2013-11-28 20:06
沙发啊,绝世好贴啊。
好贴都不评分,你们也太不厚道了。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
郭腾 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

板凳
henryyhl 发表于 2013-11-28 21:48:26
支持版主,好评!!!!!!!!
It's not going to be easy, but it is going to be worth it.

报纸
webgu 发表于 2013-11-28 22:04:39
代码太长,老出现乱码。改成图片了。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

地板
hawkscry 发表于 2013-11-29 08:57:31
经典,赞一个
互联网金融,风控,模型开发

7
keyang1218 学生认证  发表于 2013-11-29 15:11:35
第一次见,支持!

8
hutedaluan 发表于 2013-11-29 15:28:34
有点吊。。。。。

9
playmore 发表于 2013-11-29 15:58:28
版主装了64位版本的SAS了吗?

如何解决在64位版本SAS下的中文Excel文件(包括xls和xlsx)的导入和导出问题?没有乱码,没有该死的什么libname错误?

如果能在你的宏里用SYSVER判断下版本,以及用SYSADDRBITS判断下位数,然后相对应的用不同的设置进行导入导出就好了
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

10
wsyuanan 发表于 2013-11-29 16:15:05
牛气
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
而归 + 1 + 1 + 1 精彩帖子
baiyongbin1298 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 08:39