加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SAS数据集和Excel的相互转换

(2012-12-02 09:12:06)
标签:

杂谈

分类: SAS编程及应用

一:SAS数据集转换成Excel

   

1.ACCESS 方法输出SAS数据集到Excel

 

 options noxwait;
 x "del f:\data_model\book_data\chapt12\mul_sas.xls";

 
ods results off;
ods listing close;


libname test excel "f:\data_model\book_data\chapt12\mul_sas.xls" scan_text=no ;


data test.test1(dblabel=yes) test.test2;
    set sashelp.class;
    if _n_ le 5 then output test.test1;
    else output test.test2;
    label name='姓名';
    label sex='性别';
run;
libname test clear;

 

程序完成多个SAS数据集输出到多个SHEET,通过libname语句的Excel 引擎实现。

Excel 其实是个数据库,每个sheet 是库里面的表。

缺陷:表的名字只能是英文。
ods results on;
ods listing;

 

2.通过Export过程

  proc export data=sashelp.class
  outfile="C:\Users\SONY\Desktop\huzi.xls"
  dbms=excel replace ;
  sheet="赛虎博客";
  run;

  缺陷:输出的只能是变量名,而不能输出变量的标签。

3.输出PROC步的结果到外部Excel文件

  Ods Results Off;
  Ods Listing Close;

  Ods Html File="C:\Users\SONY\Desktop\ODS.Xls";

  Proc Tabulate Data=Sashelp.Class ;
  Class Sex Name;
  Var Age;
  Table Sex,Age*Sum="";
  Table Name,Age*Sum="";
  Run;

  Ods Html Close;

  Ods Results On;
  Ods Listing;

HTML输出的文件一般较大,最好是对汇总的数据来处理。

 

如果将输出结果的数据输出到SAS数据集,程序如下

 

  Ods Listing Close;
  Ods Results Off;
  Ods Output
      Table#1=Tb1
      Table#2=Tb2;
  Proc Tabulate Data=Sashelp.Class ;
  Class Sex Name;
  Var Age;
  Table Sex,Age*Sum="";
  Table Name,Age*Sum="";
  Run;

  Ods Output Close;
  Ods Results On;
  Ods Listing;

 

说明:ODS OUTPUT 语法如下:

    ods output

    对象名称1=sas数据集1

    对象名称2=sas数据集2

    ... ;

   对像名称可以是表的名称,也可以是表的说明,也可以是表的路径。如果是表的说明需要加"#"号。

可以通过ods trace 来获取,如下:

 ods trace on;

 Proc Tabulate Data=Sashelp.Class ;
  Class Sex Name;
  Var Age;
  Table Sex,Age*Sum="";
  Table Name,Age*Sum="";
  Run;

 ods trace off;

在日志中查看:

Output Added:
-------------
名称:      Table
标签:      Table 1
数据名称:  Report
路径:      Tabulate.Report.Table
-------------

Output Added:
-------------
名称:      Table
标签:      Table 2
数据名称:  Report
路径:      Tabulate.Report.Table
-------------

 

二.将原始数据转换成SAS数据集

  1.通过import

  proc import out= data
  datafile="C:\Users\SONY\Desktop\lib_excel.xls"
  dbms=excel2000 replace ;
  getnames=yes;
  run; 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有