SAS批量导入EXCEL中数据
(2012-04-18 15:38:55)
标签:
sasexcel元数据间接引用宏程数据字典过程杂谈 |
分类: SAS |
把以前写过的一段脚本分享到博客中,也方便下次自己查找。
整体逻辑过程:
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)
(这段脚本当时参考了SUGI上的一篇文章。回头找找!)
前一篇:提高SAS运行效率的小技巧