请选择 进入手机版 | 继续访问电脑版
楼主: webgu
27772 72

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

贵宾

学科带头人

95%

还不是VIP/贵宾

-

TA的文库  其他...

Python与统计

SAS与统计

威望
2
论坛币
102554 个
通用积分
3.6187
学术水平
475 点
热心指数
493 点
信用等级
434 点
经验
62375 点
帖子
1557
精华
4
在线时间
2201 小时
注册时间
2009-5-4
最后登录
2023-10-23

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

webgu 发表于 2013-11-28 20:01:32 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+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 |显示全部楼层 |坛友微信交流群
经典,赞一个
互联网金融,风控,模型开发

使用道具

keyang1218 学生认证  发表于 2013-11-29 15:11:35 |显示全部楼层 |坛友微信交流群
第一次见,支持!

使用道具

hutedaluan 发表于 2013-11-29 15:28:34 |显示全部楼层 |坛友微信交流群
有点吊。。。。。

使用道具

playmore 发表于 2013-11-29 15:58:28 |显示全部楼层 |坛友微信交流群
版主装了64位版本的SAS了吗?

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

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

使用道具

wsyuanan 发表于 2013-11-29 16:15:05 |显示全部楼层 |坛友微信交流群
牛气
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
而归 + 1 + 1 + 1 精彩帖子
baiyongbin1298 + 1 + 1 + 1 精彩帖子

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

使用道具

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

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

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

GMT+8, 2024-3-29 14:32