- 阅读权限
- 255
- 威望
- 2 级
- 论坛币
- 102554 个
- 通用积分
- 3.6187
- 学术水平
- 475 点
- 热心指数
- 493 点
- 信用等级
- 434 点
- 经验
- 62375 点
- 帖子
- 1557
- 精华
- 4
- 在线时间
- 2201 小时
- 注册时间
- 2009-5-4
- 最后登录
- 2023-10-23
学科带头人
还不是VIP/贵宾
TA的文库 其他... Python与统计
SAS与统计
- 威望
- 2 级
- 论坛币
- 102554 个
- 通用积分
- 3.6187
- 学术水平
- 475 点
- 热心指数
- 493 点
- 信用等级
- 434 点
- 经验
- 62375 点
- 帖子
- 1557
- 精华
- 4
- 在线时间
- 2201 小时
- 注册时间
- 2009-5-4
- 最后登录
- 2023-10-23
| 开心 2013-7-19 06:53:43 |
---|
签到天数: 72 天 连续签到: 1 天 [LV.6]常住居民II
|
相似文件
换一批
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
很久没有发原创贴了,一是我自己变懒了,二是似乎坛里也没有以前热闹了。
趁着今天还有一些折腾劲,分享一些关于SAS批量导入EXCEL的技巧。关于这个问题,论坛里其实也有很多前辈们做过讨论,在此,做一个并不成熟的总结。
1. SAS 导入EXCEL的方法
2. 我们可能面临的情形:
3. 相应的解决方案
4. 相应的宏程序
(1)macro im_excel- %macro im_excel
- (/*positional parameters:keep in order*/
- /*<libref>.SAS-data-set*/ dsn
- ,/*fileref | "filepath"*/file
- /*keyword parameters*/
- ,/*DBMS types: EXCEL | EXCELCS | XLS | XLSX */ dbms=excel
- ,/*replace: (blank) | REPLACE */ replace=replace
- ,/*range of spreedsheet:
- (blank) | rangename|sheet$ | sheet$UR:LR */range=
- ,/*firstobs : N*/ firstobs=1
- ,/*obs: N */ obs=1048576
- ,/*YES|NO */ getnames=yes
- ,/*YES|NO */ scantext=yes
- ,/*YES|NO */ scantime=yes
- ,/*YES|NO */ usedate=yes
- ,/*YES|NO */ mixed=no
- );
- proc import out=&dsn
- datafile=&file
- dbms=&dbms &replace;
- range="&range";
- dbdsopts="firstobs=&firstobs obs=&obs";
- getnames=&getnames;
- scantext=&scantext;
- scantime=&scantime;
- usedate=&usedate;
- mixed=&mixed;
- run;
- %mend im_excel;
复制代码 (2)macro im_1m1excel- %macro im_1m1excel(RootPath,FileName,Extension);
- libname MyExcel Excel "&RootPath.\&Filename..&Extension";
- proc sql noprint;
- select catt(trim(libname),'.',quote(trim(memname)),'n')
- into: namelist seperated by ' '
- from dictionary.tables
- where libname in ('MYEXCEL');
- quit;
- %put &namelist;
- data &FileName;
- set &namelist;
- run;
- %mend im_1m1excel;
复制代码
(3)macro im_m1mexcel- %macro im_m1mexcel(dir=) ;
- filename indata pipe "dir &dir /b";
- data FileName;
- length fname $20.;
- infile indata truncover;
- input fname $20.;
- dname=scan(fname,1,".");
- call symputx(cats('File',_n_),fname);
- call symputx(cats('ds',_n_),dname);
- call symputx('NumFile',_n_);
- run;
- %do i=1 %to &NumFile;
- proc import out=&&ds&i
- datafile="&Dir\&&file&i"
- dbms=excel replace;
- run;
- %end;
- %mend;
复制代码 (4)macro ExcelFiles2sas
若觉得有用,小伙伴们请给个好评吧!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|
|
-
总评分: 经验 + 322
论坛币 + 112
学术水平 + 55
热心指数 + 56
信用等级 + 56
查看全部评分
|