且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《深入解析sas:数据处理、分析优化与商业应用》一3.6 将数据集写出到外部文件

更新时间:2022-02-20 17:37:54

本节书摘来自华章出版社《深入解析sas:数据处理、分析优化与商业应用》一书中的第3章,第3.6节,作者 夏坤庄 徐唯 潘红莲 林建伟,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.6 将数据集写出到外部文件

除了可以在SAS环境中对SAS数据集进行加工处理外,SAS数据集的数据还可以导出到外部文件中,以便在未安装SAS软件的环境中使用,SAS提供了EXPORT过程来实现此功能。EXPORT过程可以将SAS数据集按照指定格式写入外部文本文件。当SAS安装中存在SAS/ACCESS to PC Files许可时,EXPORT过程还可以读取写入PC文件中的外部数据,包括Microsoft Access数据库文件、Miscrosft Excel工作簿、Lotus 1-2-3文件、dBase文件、JMP文件、SPSS文件、Stata文件和Paradox等。
本节介绍如何使用EXPORT过程将SAS数据集导入常用的外部文件,例如带分隔符的文本文件和Microsoft Excel工作簿。同时,SAS还提供了EXPORT向导(选择菜单“文件”“导出数据”)通过图形界面的方式将SAS数据集中的数据导出到上述类型的文件中。导出过程所生成的SAS语句也可以保存起来供以后使用。
EXPORT过程的基本形式如下:

PROC EXPORT
    DATA=数据集
    OUTFILE=文件名 | 文件引用 | OUTTABLE=表名
    DBMS=数据源标识符
    ;
RUN;

其中:
DATA=指定要导出的SAS数据集。其后可添加数据集选项。
OUTFILE=指定要将SAS数据集中的数据写入的文件,可以是物理路径或文件引用;OUTTABLE=指定将SAS数据集的内容导入Microsoft Access数据库时的表名。
DBMS指定所导出的数据类型。SAS支持多种数据类型,例如DLM、CSV、TAB、ACCESS、XLSX、XLS、EXCEL、JMP、DTA、SPASS等。
其中,DLM、CSV、TAB表示导出的数据文件是分别由指定字符(默认为空格)、逗号和制表符分隔的文本文件;ACCESS表示为使用LIBNAME语句的Miscrosoft Access 表;XLSX表示导出的数据文件为Micorsoft Excel 2007或2010的工作簿。可参考SAS帮助文档关于导入数据类型和各类型的详细信息。
在EXPORT过程中还可以指定参数REPLACE,表示当该OUTFILE=指定的文件存在时覆盖该文件,如果不指定REPLACE,则EXPORT过程不会覆盖已经存在的文件。
1.?导出到带分隔符的文件
SAS使用EXPORT过程将数据集中的数据导出到带分隔符的文件(包括DBMS为DLM、CSV和TAB)中时,还可指定表3.14中所示的参数。
《深入解析sas:数据处理、分析优化与商业应用》一3.6 将数据集写出到外部文件

例3.35:将公司员工信息导出到文件中,文件各列使用逗号(,)分隔。
代码如下:

proc export
    data=saslib.employee
    outfile='C:\SAS\data\employee.dat'
    dbms=dlm
    replace;
    delimiter=',';
    putnames=no;
run;

所导出的文件的部分内容如下:

Emp_ID,Emp_Name,Dept,Title,Entry_Date
ED003,Benjamin Leslie,DSG,Senior Manager,04/26/1993
EC003,Thomos Oliver,CSG,Senior Analyst,08/01/1998
EC011,Adam Scott,CSG,Analyst,11/20/1998
EC012,Jackson Cook,CSG,Manager,06/07/1998
EQ002,Sara Duncan,QSG,Analyst,03/30/1999

2.?导出到CSV文件
例3.36:将数据集saslib.employee中的文件导出到CSV文件。
代码如下:

proc export
    data=saslib.employee
    outfile="C:\SAS\data\employee.csv"
    dbms=csv;
run;

DBMS为CSV会默认使用逗号分隔所生成文件中的各个列。该代码所生成的文件内容与上例相同,这里不再给出。
还可以将上面代码中的DBMS=指定为“TAB”,这时会生成各个列之间由制表符分隔的文件。
3.?使用数据集选项导出部分数据
在PROC EXPORT中还可以使用数据集选项导出部分变量或部分观测。
例3.37:仅将所有员工的姓名、所在部门和入职日期导出到CSV文件。因为数据集saslib. Employee中还包含其他变量,所以使用数据集选项KEEP=指定要导出的变量。代码如下:

proc export
    data=saslib.employee (keep=Name Dept Entry_Date)
    outfile='C:\SAS\data\employee.csv'
    dbms=csv
    replace;
run;

导出的文件部分内容如下:

Emp_ID,Emp_Name,Entry_Date
ED003,Benjamin Leslie,04/26/1993
EC003,Thomos Oliver,08/01/1998
EC011,Adam Scott,11/20/1998
EC012,Jackson Cook,06/07/1998
EQ002,Sara Duncan,03/30/1999

例3.38:将DSG部门的所有员工信息导出到CSV文件中。
代码如下:

proc export
    data=saslib.employee (where=(Dept="DSG"))
    outfile='c:\sas\data\dsg.csv'
    dbms=csv
    replace;
run;

使用数据集选项WHERE=指定导出满足条件的观测。所导出的文件的部分内容如下:

Emp_ID,Emp_Name,Dept,Title,Entry_Date
ED003,Benjamin Leslie,DSG,Senior Manager,04/26/1993
ED013,Alexandra May,DSG,Manager,04/11/2000
ED004,Christian Peters,DSG,Senior Analyst,05/18/2001
ED011,Hunter Joyce,DSG,Analyst,08/13/2001
ED005,Jasmine Rose,DSG,Senior Analyst,11/15/2003

4.?导出到Microsoft Excel文件
例3.39:将数据集saslib.employee中的文件导出到Microsoft Excel文件。
代码如下:

proc export
    data=saslib.employee
    outfile="C:\SAS\data\employee.xlsx "
    dbms=xlsx ;
run;

所生成的Microsoft Excel文件打开如图3.40所示。
《深入解析sas:数据处理、分析优化与商业应用》一3.6 将数据集写出到外部文件