SAS批量导入EXCEL中数据
把EXCEL数据导入到SAS相信是各位朋友经常碰到的问题,把数据导入到SAS中的方法有很多:infile import 或者通过菜单操作均可实现,但如果导入的EXCEL中包括大量的SHEET ,是一个很麻烦的工作。
把以前写过的一段脚本分享到博客中,也方便下次自己查找。
整体逻辑过程:
1、首先,确定如何如何读入EXCEL中SHEET。
2、根据EXCEL中的SHEET的数量使用一个循环来读入数据。
主要用到的几个过程为:
一、libname 库名 EXCEL 地址
这是一个很实用库建立过程,这个改天写篇短博来讨论。
1、通过libname 库来引入某个EXCEL中的所有 SHEET 数据。
2、按每sheet会对应在库下生成一个数据集
二、数据字典
1、在SAS会话开始的时候创建。
2、vstabvw存储了每个库的内容:表名、类型。
三、宏
下面提如何通过宏脚本来实现批量导入EXCEL数据到SAS中。
%let dir=C:\demo;
%macro ReadXls (name);
libname excellib excel “&dir.\&name”;
proc sql noprint;
create table sheetname as
select tranwrd(memname, “””, “‘” ) as sheetname
from sashelp.vstabvw
where libname= “EXCELLIB”;
select count(DISTINCT sheetname) into :number
from sheetname;
select DISTINCT sheetname into :sheet1 – :sheet% left(&number)
from sheetname;
quit;
libname excellib clear;
%do i=1 %to &cnt_sht;
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 (test.xls)