SAS宏应用2-万能批量数据导入程序(EXCE-TXT-CSV)

(3页)

'SAS宏应用2-万能批量数据导入程序(EXCE-TXT-CSV)'
***** 读取一个文件夹下命名无规则的多个excel文档 *********;%MACRO GetFileName(DSNAME=,ROUTE=,TYP=) ;/*参数有两个:路径,文件类型后缀*/ %PUT %STR(----------->DIRNAME=&ROUTE) ; %PUT %STR(----------->TYP=&TYP) ; DATA WORK.&DSNAME ; RC=FILENAME("DIR","&ROUTE") ;/*把&DIRNAME值传给文件引用符“DIR"*/ OPENFILE=DOPEN("DIR") ;/*得到路径标示符OPENFILE,DOPEN是打开directory的sas内置函数*/ IF OPENFILE>0 THEN DO ;/*如果OPENFILE>0表示正确打开路径*/ NUMMEM=DNUM(OPENFILE) ;/*得到路径标示符OPENFILE中member的个数nummem*/ DO II=1 TO NUMMEM ; NAME=DREAD(OPENFILE,II) ;/*用DREAD依次读取每个文件的名字到NAME*/ OUTPUT ;/*依次输出*/ END ; END ; KEEP NAME ;/*只保留NAME列*/RUN ;PROC SORT data=WORK.&DSNAME; ;/*按照NAME排序*/ BY DESCENDING NAME ; %IF &TYP^=ALL %THEN %DO ;/*是否过滤特定的文件类型&TYP*/ WHERE INDEX(UPCASE(NAME),UPCASE(".&TYP"));/*Y,则通过检索NAME是否包含&TYP的方式过滤文件类型*/ %END ;RUN ;%MEND GetFileName;%GetFileName(DSNAME=FILE,ROUTE=F:\服务器\数据挖掘\数据堂-数据挖掘竞赛数据集\Data\behavior\2012-05-07,TYP=TXT);************ 读取同一个excel文档里面命名无规则的多个工作表 ****************;/*去百度原文标题“SAS批量导入EXCEL中数据 ”的文章,可以看到程序解释*/%let dir=F:\SAS\shumo_miss\;%macro ReadXls (name);libname excellib excel "&dir.&name";proc sql noprint; /*创建表 sheetname*/create table sheetname asselect tranwrd(memname, "''", "'" ) as sheetnamefrom sashelp.vstabvwwhere libname= "EXCELLIB";select count(DISTINCT sheetname) into :number/*提取excel文件中的sheet表的数量*/from sheetname;select DISTINCT sheetname into :sheet1 - :sheet%left(&number)/*把每个表都指定到相应的宏中*/from sheetname;quit;%put &number;libname excellib clear; %do i=1 %to &number.;proc import datafile= "&dir.&name" out=sheet&i replace;sheet= "&&sheet&i";getnames=yes;mixed=yes;run;/*表汇总,如果有表格式不统一的话,可以不汇总,要不然数据会出问题*/proc append base=master data=sheet&i. force; run;%end ;%mend ReadXls;%ReadXls(no_hege.xls);********* 逐个对数据集中的变量进行运算 ***********************;/*proc contents 过程是了解一个数据集的属性,包括这个数据集的系统信息,变量属性等。*/options mprint mlogic;proc contents data=sashelp.classnoprint out=class_variable;run;data class_variable;set class_variable;where type=1;/*1代表数值型变量,0代表字符型变量*/keep NAME;run;%macro DsVar;%let dsid=%sysfunc(open(class_variable)); %if &dsid gt 0 %then %do; %let nobs=%sysfunc(attrn(&dsid,nobs));/*计算数据集行数,如果需要计算列数则把nobs换为nvars*/ %do i=1 %to &nobs; %let rc=%sysfunc(fetchobs(&dsid,&i));/*读取指定的第i条记录到PDV中,若成功则返回0,返回-1表示已读取完所以记录*/ %let varnume=%sysfunc(varn
关 键 词:
SAS 应用 万能 批量 数据 导入 程序 EXCE TXT CSV
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:SAS宏应用2-万能批量数据导入程序(EXCE-TXT-CSV)
链接地址: https://www.wenku365.com/p-44812441.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开