SAS批量读入Excel+批量修改变量名

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

收集了N多Excel表格,如何将他们汇总在一块儿呢?如果会VBA,这或许也不是一件难事,事实上有些Excel插件就可以解决这个问题。这里看看如何用SAS来解决/*指定需要合并的文件的路径*/%letpath=D:\test;/*注意dir后面与路径之间要有空格*/filenamefilespipedir&path/b;/*读入文件名列表*/datatest;infilefilestruncover;inputname$96.;run;/*获取文件名宏变量和文件个数宏变量*/procsqlnoprint;selectscan(name,1,';'),count(name)into:filenamesseparatedby';',:nfromtest;quit;/*循环读入Excel文件*/%macroinfiles;%locali;%doi=1%to&n;procimportdatafile=&path.\%scan(&filenames,&i,';')out=_a&idbms=excelreplace;run;%end;%mend;%infiles/*合并文件*//*这一步也可以放在上面的循环中处理*/%macroappends;%locali;%doi=2%to&n;procappendbase=_a1data=_a&i;run;%end;datafiles;set_a1;run;%mend;%appends;/*删除文件*/procdatasetslib=worknolist;delete_a:/memtype=data;quit;如果是遇到这样的表头呢?好吧,当然也是可以正确读入的。libnamelocald:\test;%letin_file_path=d:\test;%macroin_file(in_file_name,read_sheet_name,fstobs,out_file_name);procimportout=&out_file_namefile=&in_file_path\&in_file_namedbms=excelreplace;dbdsopts='firstobs=&fstobs';getnames=no;scantext=yes;usedate=yes;sheet=&read_sheet_name;scantime=yes;dbsaslabel=none;run;%mend;%in_file(20150122-XXXX花名册-(3)副本.xlsx,在职名册,4,hr);/*如果不加dbsaslabel选项,打开数据集时会发现字段名称为A,B,C...打开缓慢,会导致SAS崩溃*//*建议使用office2013及以上*/读入后发现字段名是这样的,没有任何意义,怎么批量改?/*批量修改变量名*//*应用场景:*//*读入带有中文列名的Excel表格时,会产生例如_col1,var1,F1等形式的字段名,这往往不是所需要的*//*一个一个rename比较麻烦,可以采取批量修改的方式,特别是读入表格较多的时候*//*注意:新的字段名需要与原字段名位置相对应,逻辑库和数据集名称需要大写*//*%rename(WORK,A,'aabbccddeeffgghh');*//*例如要将abcdefgh修改为aabbccddeeffgghh*/dataa;inputabcdefgh;stop;cards;;run;%macrorename(lib,dsn,newname);data&LIB..&dsn._copy;set&LIB..&dsn.;run;procsqlnoprint;selectnvarinto:num_varsfromdictionary.tableswherelibname=&LIBandmemname=&DSN;selectdistinct(name)into:var1-:var%trim(%left(&num_vars))fromdictionary.columnswherelibname=&LIBandmemname=&DSN;quit;procdatasetslibrary=&LIB;modify&DSN;rename%doi=1%to&num_vars.;&&var&i=%scan(&newname,&i,'')%end;;quit;%mendrename;%rename(WORK,A,'aabbccddeeffgghh');

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功