全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 学习笔记1.0
4388 2
2013-06-14

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

https://bbs.pinggu.org/thread-1122443-1-1.html



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-3-17 17:05:39
这个程序运行报错:

WARNING: INTO 子句:s1 到 :s0 没有指定有效的宏变量序列。
NOTE: 没有选择任何行。
WARNING: INTO 子句:v1 到 :v0 没有指定有效的宏变量序列。
NOTE: 没有选择任何行。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-7-21 09:25:53
顶一下,帮了忙,急着用的时候确实很需要。

谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群