mysql导入sas文件夹_SAS—批量导入文件夹下的所有excel文件(对quote函数的简单介绍)...

本文介绍了如何使用SAS宏程序批量导入文件夹下的所有Excel文件到SAS,并详细解释了quote函数在处理特殊字符时的作用,确保宏变量正确处理含有特殊字符的值。
摘要由CSDN通过智能技术生成

原标题:SAS—批量导入文件夹下的所有excel文件(对quote函数的简单介绍)

ff2e03475c0951a683fc2ee0ce8aeff0.gif

今天分享一段可以把一个文件夹下的所有excel批量导入到sas中的程序。

代码如下:

options validvarname=any;

%macro directory(dir=);

%let rs=%sysfunc(filename(filref,&dir));

%let did=%sysfunc(dopen(&filref));/*打开该文件路径*/

%let nobs=%sysfunc(dnum(&did));/*返回rs文件路径下的文件数*/

%do i=1 %to &nobs.;

%let name=%qscan(%qsysfunc(dread(&did,&i)),1,.);/*读取文件名字*/

%let ext=%qscan(%qsysfunc(dread(&did,&i)),-1,.);/*读取文件格式*/

libname test "&dir.&name..&ext.";/*新建test逻辑库*/

proc sql noprint;

select count(distinct memname) into :number

from sashelp.vmember

where libname="TEST";;

select compress(memname,"$") into :sheet1 - :sheet%left(&number)

from sashelp.vmember

where libname="TEST";

quit;

%do j=1 %to &number;

proc import out=&&sheet&j. datafile="&dir.&name..&ext." dbms=excel replace;

getnames=yes;

sheet="&&sheet&j";

mixed=yes;

run;

%end;

%end;

%let rc=%sysfunc(dclose(&did));

%mend directory;

本段程序主要由3部分组成,第一部分是利用 macro quote对excel文件进行处理;第二部分是利用 sql macro 对excel文件进行宏命名;第三部分就是利用 proc import 导入到sas中。代码很简单,大家简单看一下就好。需要注意的是要把Excel文件的sheet名都要改成sheet1 到sheetn。

现在给大家主要是介绍下quote:

在SAS 系统中有很多特殊字符,如下所示

blank ) = LT

; ( | GE

¬ + AND GT

^ — OR IN

~ * NOT %

, (comma) / EQ &

' < NE #

“ > LE

这时就需要用到quote函数了,quote 函数的作用是屏蔽一些特殊字符,使得 SAS 系统把这些特殊字符当成普通字符来看待。

背后的原理如下:SAS 系统所有的宏变量及其取值都存在一张表中,对于使用了 quote函数 的字符 SAS 在存储时会给这些特殊字符加上前缀和后缀,SAS 宏处理器对该宏变量做字符串替换时把前缀和后缀去掉,用其原始值来完成替换。

比如逗号","既可以用来分隔某个宏调用或宏函数的参数(%scan(参数,2,'',")),也可以作为某个宏变量的值中一个普通的字符(%let value=part1,part2;)。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值