SAS中文论坛

标题: excel中多个sheet导入sas的问题 [打印本页]

作者: bxfly    时间: 2014-4-8 10:59
标题: excel中多个sheet导入sas的问题
1、将多个sheet导入多个数据集里面
1)利用sas excel引擎
libname d excel 'C:\Users\quan\Desktop\D题\附件2.xls';
PROC PRINT DATA=d."pa $"N;
RUN;
另外可以直接利用excel引擎里做一些数据变换
data d.total;
set d.'pa $'n d.'pb $'n;
RUN;

这里有两点强调:$符号与数据集名字pa之间一定有一个空格,没有空格的话则会显示下
面这个错误    ERROR: 文件“D.'pa$'n.DATA”不存在。
第二点 n表示引用符号的标记,一定要紧邻单引号或双引号后面,否则也是有错误的。
(2)利用proc import 过程将多个sheet导入指定的逻辑库
libname d 'C:\Users\quan\Desktop\2013夏令营题\D题\附件2.xls';
%macro quan;
proc sql noprint;
   select count (distinct (memname)) INTO :TOT
     from sashelp.vtable
  where libname='D' ;
SELECT DISTINCT (memname) into :s1-:s%trim(%left(&tot))
  from sashelp.vtable
   where libname='D';
   select distinct(compress(MEMNAME,"',$")) into: v1 - :v%trim(%left(&tot))
      from sashelp.vtable
  where libname='D';
quit;
%DO I=1 %TO &TOT;
%put &&v&i;
%put &&s&i;
proc import datafile= 'C:\Users\quan\Desktop\2013夏令营题\D题\附件2.xls' out=&&v&I replace;
getnames=yes;
range=&&s&I;
run;
%END;
%mend;
%quan;
  
这里利用了sas 数据字典里面的知识。Sashelp.vtable视图保存了sas 所有逻辑库里面的数据名字以及数据所在的逻辑库等等信息。利用了compress函数,提取了excelsheet名字并变成宏变量。
2、将多个sheet里面的数据合并为一个数据集
  其实如果将多个sheet导入了多个数据集里面,之后的合并方法有很多了。Data步中set语句,sqlOUTER UNION,以及append语句都可以做到。
  但是append更为高效点。
libname d 'C:\Users\quan\Desktop\2013夏令营题\D题\附件2.xls';
%macro quan;
proc sql noprint;
   select count (distinct (memname)) INTO :TOT
     from sashelp.vtable
  where libname='D' ;
SELECT DISTINCT (memname) into :s1-:s%trim(%left(&tot))
  from sashelp.vtable
   where libname='D';
   select distinct(compress(MEMNAME,"',$")) into: v1 - :v%trim(%left(&tot))
      from sashelp.vtable
  where libname='D';
quit;
%DO I=1 %TO &TOT;
%put &&v&i;
%put &&s&i;
proc import datafile= 'C:\Users\quan\Desktop\2013夏令营题\D题\附件2.xls' out=&&v&I replace;
getnames=yes;
range=&&s&I;
run;
/加载到一个数据集,纵向合并时proc append会比data步更有效率/
data all;
  if _n_=0 then set &&v&I;
run;
proc append base=all data=&&v&I force;
run;
%END;
%mend;
%quan;
参考:
http://crackman.net/?p=243*/
如何合并sas数据集和一个EXCEL文件中的两个sheet
http://www.dataguru.cn/article-2126-1.html
求把excel中多个sheet导入SAS,多个sheet
http://bbs.pinggu.org/thread-1122443-1-1.html


作者: slash    时间: 2014-4-9 00:05
good stuff!
作者: mono    时间: 2014-4-9 09:53
挺不错的,尤其是对小数据用户。
作者: dan    时间: 2014-4-14 16:14
谢谢!!!
作者: dan    时间: 2014-4-25 11:17
非常感谢!!




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2