資源描述:
《SAS宏應(yīng)用2-萬能批量數(shù)據(jù)導(dǎo)入程序(EXCE-TXT-CSV)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、*****讀取一個文件夾下命名無規(guī)則的多個excel文檔*********;%MACROGetFileName(DSNAME=,ROUTE=,TYP=);/*參數(shù)有兩個:路徑,文件類型后綴*/%PUT%STR(----------->DIRNAME=&ROUTE);%PUT%STR(----------->TYP=&TYP);DATAWORK.&DSNAME;RC=FILENAME("DIR","&ROUTE");/*把&DIRNAME值傳給文件引用符“DIR"*/OPENFILE=DOPEN("DIR");/*得到路徑標示符OPENFILE,DO
2、PEN是打開directory的sas內(nèi)置函數(shù)*/IFOPENFILE>0THENDO;/*如果OPENFILE>0表示正確打開路徑*/NUMMEM=DNUM(OPENFILE);/*得到路徑標示符OPENFILE中member的個數(shù)nummem*/DOII=1TONUMMEM;NAME=DREAD(OPENFILE,II);/*用DREAD依次讀取每個文件的名字到NAME*/OUTPUT;/*依次輸出*/END;END;KEEPNAME;/*只保留NAME列*/RUN;PROCSORTdata=WORK.&DSNAME;;/*按照NAME排序*/
3、BYDESCENDINGNAME;%IF&TYP^=ALL%THEN%DO;/*是否過濾特定的文件類型&TYP*/WHEREINDEX(UPCASE(NAME),UPCASE(".&TYP"));/*Y,則通過檢索NAME是否包含&TYP的方式過濾文件類型*/%END;RUN;%MENDGetFileName;%GetFileName(DSNAME=FILE,ROUTE=F:服務(wù)器數(shù)據(jù)挖掘數(shù)據(jù)堂-數(shù)據(jù)挖掘競賽數(shù)據(jù)集Databehavior2012-05-07,TYP=TXT);************讀取同一個excel文檔里面命名無規(guī)
4、則的多個工作表****************;/*去百度原文標題“SAS批量導(dǎo)入EXCEL中數(shù)據(jù)”的文章,可以看到程序解釋*/%letdir=F:SASshumo_miss;%macroReadXls(name);libnameexcellibexcel"&dir.&name";procsqlnoprint;/*創(chuàng)建表sheetname*/createtablesheetnameasselecttranwrd(memname,"''","'")assheetnamefromsashelp.vstabvwwherelibname="EXCEL
5、LIB";selectcount(DISTINCTsheetname)into:number/*提取excel文件中的sheet表的數(shù)量*/fromsheetname;selectDISTINCTsheetnameinto:sheet1-:sheet%left(&number)/*把每個表都指定到相應(yīng)的宏中*/fromsheetname;quit;%put&number;libnameexcellibclear;%doi=1%to&number.;procimportdatafile="&dir.&name"out=sheet&ireplace;s
6、heet="&&sheet&i";getnames=yes;mixed=yes;run;/*表匯總,如果有表格式不統(tǒng)一的話,可以不匯總,要不然數(shù)據(jù)會出問題*/procappendbase=masterdata=sheet&i.force;run;%end;%mendReadXls;%ReadXls(no_hege.xls);*********逐個對數(shù)據(jù)集中的變量進行運算***********************;/*proccontents過程是了解一個數(shù)據(jù)集的屬性,包括這個數(shù)據(jù)集的系統(tǒng)信息,變量屬性等。*/optionsmprintmlogi
7、c;proccontentsdata=sashelp.classnoprintout=class_variable;run;dataclass_variable;setclass_variable;wheretype=1;/*1代表數(shù)值型變量,0代表字符型變量*/keepNAME;run;%macroDsVar;%letdsid=%sysfunc(open(class_variable));%if&dsidgt0%then%do;%letnobs=%sysfunc(attrn(&dsid,nobs));/*計算數(shù)據(jù)集行數(shù),如果需要計算列數(shù)則把nob
8、s換為nvars*/%doi=1%to&nobs;%letrc=%sysfunc(fetchobs(&dsid,&i));