SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 4585|回复: 4
打印 上一主题 下一主题

excel中多个sheet导入sas的问题

[复制链接]

6

主题

16

帖子

86

积分

超级版主

Rank: 8Rank: 8

积分
86
跳转到指定楼层
楼主
发表于 2014-4-8 10:59:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
参考:
如何合并sas数据集和一个EXCEL文件中的两个sheet
求把excel中多个sheet导入SAS,多个sheet

分享到:  微信微信
收藏收藏1
回复

使用道具 举报

10

主题

39

帖子

1070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1070
QQ
沙发
发表于 2014-4-9 00:05:17 来自手机 | 只看该作者
good stuff!
回复

使用道具 举报

2

主题

41

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
板凳
发表于 2014-4-9 09:53:36 | 只看该作者
挺不错的,尤其是对小数据用户。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

44

积分

新手上路

Rank: 1

积分
44
地板
发表于 2014-4-14 16:14:46 | 只看该作者
谢谢!!!
回复

使用道具 举报

0

主题

3

帖子

44

积分

新手上路

Rank: 1

积分
44
5#
发表于 2014-4-25 11:17:12 | 只看该作者
非常感谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-11-22 14:37 , Processed in 0.111931 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表