SAS访问外部数据文件课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《SAS访问外部数据文件课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAS 访问 外部 数据文件 课件
- 资源描述:
-
1、第第4 4章章 访问外部数据文件访问外部数据文件清华大学经管学院清华大学经管学院 朱世武朱世武本章内容本章内容v通过IMPORT过程导入外部数据文件;v通过LIBNAME语句和库引擎连接外部数据文件;v通过SAS/ACCESS软件访问外部数据文件;v通过ODBC或远程软件平台访问外部数据文件;v创建SAS数据集方法总结。 注意:本章的一些例子需要较为复杂的软硬件环境,可能无法在单个PC机上实现操作。 访问两类外部文件访问两类外部文件 SAS系统访问的外部文件可以分为两类: PC格式的数据文件; 流行数据库(DBMS)文件。 PC格式的数据文件流行数据库文件DBFOracleDIFDB2WK1,
2、WK3,WK4SybaseEXCEL4, EXCEL5,EXCEL97, EXCEL2000MS Access访问外部数据文件方法访问外部数据文件方法 除了前面两章介绍的读入外部数据文件的方法外,SAS系统访问外部文件,特别是流行数据库文件的方法还有以下几种。 通过IMPORT过程; 通过LIBNAME语句和库引擎; 通过ACCESS过程; 通过ODBC或远程软件平台。通过通过IMPORT过程过程 IMPORT过程可以导入的外部数据文件:n PC格式的数据文件;n 以固定字符为字段分隔符的文本文件。 句法与选项说明句法与选项说明 PROC IMPORT DATAFILE=filename“ |
3、 TABLE=tablename OUT=SAS-data-set ; 选项说明: DATAFILE=规定要读入外部文件的地址及名称TABLE=规定外部数据文件中的表名OUT=规定要输出的SAS数据集DBMS=规定外部数据文件格式的标识名REPLACE规定替换已存在文件应用举例应用举例 例4.1 导入EXELL数据表。proc import out=tb31datafile= D:ResDattable.xlsdbms=excel2000 replace;range=3#1$; /*导入表3.1 */getnames=yes;run;例4.2 从文本文件的第二行导入数据。proc import
4、 out=b_share_1datafile= D:ResDatb_shares_1.txtdbms=dlm replace;getnames=no;datarow=2;run;通过通过LIBNAME语句和库引擎语句和库引擎 通过LIBNAME语句和库引擎连接的外部文件有两类: 其它SAS版本或分析软件的数据集; 流行数据库(DBMS)。语句格式: LIBNAME libref SAS/ACCESS-engine-name ; BMDPCRSPACCDB2FAMECHLIODBCOLEDBORACELOSIRISREMOTEREMOTE6REUTERSSPSSSYBASETERADATAV6V
5、604V8XMLXPORTSAS8.2系统支持的库引擎 读入其它版本或分析软件数据集读入其它版本或分析软件数据集 可以通过菜单建立新逻辑库和利用LIBNAME语句连接其它SAS版本或分析软件的数据集。例4.5 连接SAS6版本数据集。libname datav6 V6 d:ResDat;run;例4.6 连接SPSS数据集。libname spss spss d: ResDat ;run;读入流行数据库(读入流行数据库(DBMS) 读入流行数据库时需要知道这些数据库的简单操作。同样可以通过菜单建立新逻辑库和利用LIBNAME来实现。例4.7 用LIBNAME建立与ORACLE DBMS的连接。
6、libname oralib oracle user=ZSW password=ZSW321path=ora7db dbindex=y;例4.8 取消逻辑库指定。libname oradb clear;例4.9 与DB2的连接。libname db2lib db2 authid=ZSW ssid=ZSW321;通过通过ACCESS过程过程 通过ACCESS过程可以实现对外部数据文件的透明访问和读写。SAS/ACCESS可以访问的主要外部数据文件: IMS-DL-ISQL/DSDB2ADABASRdbOracleSybaseIngresInformixDBF/DIFExcelODBCACCESS
7、过程访问外部数据须分两步完成: 创建访问描述器(Access Descriptor); 创建基于外部数据文件的数据视窗(View)。ACCESS过程访问外部数据流程图过程访问外部数据流程图 其它平台数据库文件访问描述器Access数据视图SAS程序Access数据视图Access数据视图 SAS系统通过不同的方法建立不同的数据视窗,除了这里用ACCESS过程建立ACCESS视窗外,还有用数据步和SQL过程建立的视窗。它们都能透明访问不同平台上的数据对象。 创建访问描述器创建访问描述器 语句格式:PROC ACCESS DBMS=DBF|DIF|WKn|XLS|; CREATE libref.m
8、ember-name.ACCESS; required database-description statements; optional editing statements; RUN;创建访问描述器的SAS程序对于不同的外部文件有不同的形式。下面给出几种外部文件访问描述器的创建方法。 由由DBF文件创建访问描述器的一般格式:文件创建访问描述器的一般格式:PROC ACCESS DBMS=DBF; CREATE 逻辑库名.访问描述器名.ACCESS; PATH=DBF文件的地址和全名;Run;由由EXELL表创建访问描述器的一般格式:表创建访问描述器的一般格式:PROC ACCESS DBM
9、S=XLS; CREATE 逻辑库名.访问描述器名.ACCESS; PATH=XLS文件的地址和全名; /*规定运行时在LOG窗口显示列的信息 */RUN;由由ORACLE数据库创建访问描述器的一般格式:数据库创建访问描述器的一般格式:PROC ACCESS DBMS=Oracle; CREATE 逻辑库名.访问描述器名.ACCESS; USER=Oracle用户ID;ORAPW=Oracle服务器上的用户密码;TABLE=Oracle表名;PATH=Oracle驱动器、结点和表的别名或库名;RUN;例4.10 由XLS表创建访问描述器RESDAT.S000001.ACCESS。 proc a
10、ccess dbms=xls; create work.s000001.access; path=D:ResDatstk000001.xls; getnames yes; scantype=yes; list all; run;例4.11 由DBF文件创建访问描述器RESDAT.A600002.ACCESS。 proc access dbms=dbf; create resdat.stk000002.access; path=D:resdatstk000002.dbf; list all; run; 创建数据视窗创建数据视窗 通常基于一个访问描述器可以创建多个数据视窗。SAS数据视窗(View
11、)和SAS数据集(Data)都是数据文件,均可以作为数据对象被引用。虽然类型不同,但在同一逻辑库中名称不能重复。 创建基于访问描述器数据视窗的语句格式创建基于访问描述器数据视窗的语句格式PROC ACCESS DBMS=DBF|DIF|WKn|XLS| ACCDESC=libref.access-descriptor; CREATE libref.member-name.VIEW; SELECT column-list; optional editing statements; RUN;创建基于访问描述器的数据视窗的一般格式PROC ACCESS DBMS=数据库类型ACCDESC=访问描述器
12、名; CREATE 逻辑库.视窗名.VIEW; SELECT ALL|DBMS表的列名; RUN;当然,对于不同的DBMS还有许多不同的控制语句。 同时创建访问描述器和数据视窗的语句格式同时创建访问描述器和数据视窗的语句格式PROC ACCESS DBMS=DBF|DIF|WKn|XLS|;CREATE libref.member-name.ACCESS; required database-description statements; optional editing statements; CREATE libref.member-name.VIEW; SELECT column-lis
13、t; optional editing statements; RUN;例4.12 创建DBF文件的数据视窗。proc access dbms=dbf accdesc=work.s000002;create work.s000002.view;select all;list view;run;例中,基于访问描述器RESDAT.s000002.ACCESS创建D B F 文 件 s t k 0 0 0 0 0 2 . D B F 的 数 据 视 窗WORK.s000002.VIEW.由数据视窗创建数据集由数据视窗创建数据集 实现这一目标的方法很多,如数据步、ACCESS过程等。例4.15 利用数
14、据步将视窗转换为数据集。data stk000001;set s000001;run;ACCESS过程将数据视窗转换为数据集格式:PROC ACCESS VIEWDESC=数据视窗名数据视窗名 OUT=数据集名数据集名;例例4.16 ACCESS过程将数据视窗转换为数据集。PROC ACCESS VIEWDESC=s000001 OUT=stk000001;Run;通过通过ODBC ODBC(Open Database Connectivity)技术是由微软提供的一个应用程序(API)接口标准。用于支持ODBC软件之间的数据访问。支持ODBC的外部数据文件系统: MS AccessTextTe
15、radataMS ExcelOracleINGRESDBaseSybaseSQL ServerParadoxDB2AS/400BtrieveINFORMIXRedbrick创建创建ODBC数据源数据源 v通过ODBC访问外部数据文件的前提是创建ODBC数据源。v不同的外部数据文件系统创建ODBC数据源的方式也不一样。创建创建ODBC引擎逻辑库引擎逻辑库 v这里只给出用菜单方式由ODBC数据源创建SAS逻辑库,实现对外部数据文件的访问。用SQL编程实现对外数据ODBC数据源的访问方法可以参考相应的技术资料,这里从略。v利用前面创建的ODBC数据源TABLE和DISTS, 用菜单创建新逻辑库的方式
16、创建SAS逻辑库ODBC1和ODBC2,读者自行操作。v实际应用时,通过ODBC访问后台数据库SQL-Server是非常简单和有效的方法。 第第5章章 数据步读入原始数据数据步读入原始数据清华大学经管学院清华大学经管学院 朱世武朱世武ZResdat样本数据:样本数据:SAS论坛:论坛: 原始数据分类原始数据分类 原始数据一般分为字符和数值两种类型,数值数据又分为标准数值数据和非标准数值数据。标准数据标准数据是由字符或者数值组成的可以被列表、列、格式化、命名输入方式读入的数据如ARKANSAS,1166.42。非标准数据非标准数据只能在输入格式的帮助下读入的数据。如非标准的数值数据,可能包含逗号
17、,空格等符号。日期和时间数值。十六进制和二进制数值。标准数值数据标准数值数据只包含数字,小数点或负号。非标准数值数据非标准数值数据则包含其它的特殊字符,如千分号,美元符号等。 读取数值数据的规则数值前面的括号或者减号符号表示该数值为负。首位有一个或者多个零不影响对相应变量的赋值。SAS不把数值尾部的空格默认为0。数值数据的前后都可以有空格,但是数字中间不能有(除非用COMMA. 或BZ.格式读入)。字符数据字符数据 字符数据是由一系列字符组成的数据。下面任一种情况下,INPUT语句认定读入变量的值是字符值。INPUT语句中变量名后跟一个美元符号$;使用字符输入格式;要读入数据的变量已经被定义为
18、字符值。原始数据呈现形式原始数据呈现形式 原始数据的呈现形式一般分为呈现在SAS编辑窗口的数据行,和储存在外部文件中的原始数据例例5.1 编辑窗口下,数据行形式的原始数据。data weight; input PatientID $ Week1 Week8 Week16; loss=Week1-Week16; datalines;2477 195 177 1632431 220 213 1982456 173 166 1552412 135 125 116;例例5.2 储存在外部文件中的原始数据,TXT文本格式。-1-22477 195 177 1632431 220 213 1982456
19、173 166 1552412 135 125 116使用使用INPUT语句读入原始数据语句读入原始数据 INPUT语句的用途有两方面:读入外部数据文件中的数据;读入CARDS语句后面的数据。 INPUT语句的五种输入方式语句的五种输入方式 简单方式:INPUT ; 列方式:INPUT variable start-column ; 格式化方式:INPUT variable informat. ; INPUT (variable-list) (informat-list) ; INPUT (variable-list) ( informat.); 列表方式:INPUT variable ; I
20、NPUT variable ; 命名方式:INPUT variable= ; INPUT variable= start-column ; INPUT variable=informat. ; 选项说明specification(s)变量及其格式的详细说明variable-list列出要读入数据值的变量执行下一个INPUT语句时指针移到下一记录行,要求一条记录必须对应一个数据行执行下一个INPUT语句时指针保持在当前记录行,不要求一条记录对应一个数据行$ 定义字符型变量start-column规定变量值在记录行中的起始列end-column规定变量值在记录行中的终止列decimalplaces
21、小数点位置pointer-control 移动输入指针到指定的行或列上informat 列出变量的输入格式;informat-list -列出变量列表对应的输入格式列表decimals规定小数部分的位数列方式输入列方式输入 语句格式INPUT variable start-column ; 设定变量名称,为可选项,如果选择$则表示这是一个字符变量。而start-column 表示该变量在记录行中的起始列(终止列)。例例5.3 使用列方式输入数据。data scores;infile datalines truncover;input name $ 1-10 sex $11 age 12-15
22、;datalines;Justine F 12Bob M 13;-+-1-+-2-+-3-+- 例中,规定记录行的第1到10列为变量NAME的输入值,11列为变量SEX的输入值,12到15列为变量AGE的输入值。NAME和SEX为字符型变量。列方式输入使用条件列方式输入使用条件原始数据输入值的位置在每个记录行相同的列中; 原始数据输入值是标准的数值格式或一般字符格式。列方式输入的特点列方式输入的特点原始数据输入值可以按任意顺序读取;字符型原始数据中间可以有空格;可以重复读取原始数据记录行的某一部分。读入的数据值不需要用空格或者其它分隔符隔开。列表方式输入列表方式输入 简单列表方式输入简单列表方
23、式输入INPUT variable ; 调整列表方式输入调整列表方式输入INPUT variable ;列表方式输入使用条件输入数据值之间至少有一个至少有一个空格隔开;用小数点表示表示缺失值;字符型值的默认长度为8个字节,也可以用LENGTH, ATTRIB, INFORMAT语句规定长度;数据必须是字符数据或标准的数值数据。数据必须是字符数据或标准的数值数据。列表方式输入格式修饰符 :当原始数据是以空格为分隔符时,要想对变量值长度不一致的变量规定统一长度就必须用到该格式修饰符。规定变量值是从非空格列中读取, 直到第一次遇到以下三种情况之一,该变量值的读取过程才结束:l 下一个空格列;l 达到
24、变量预先设定的长度(如果没有预先设定变量长度就是SAS默认字符长度8个字节);l 数据行结束。例例5.5 空格为分隔符时,对变量值长度不一致的变量规定统一长度。data;input Univ : $12. Plc$ Zip ;cards;MIT Boston 100023 TsinghuaUniv Beijing 100084;例中,第一个观测变量Univ的值为MIT(只读3个字符,因遇到空格而结束)第二个观测值为TsinghuaUniv(得到先前定义的变量长度12)。如果只对变量Univ规定长度,而不加格式修饰符(:),在读入第一条记录时就会出错,如果不对变量Univ规定长度,读入第二条记录
25、时就会只读入Tsinghua,而不是预先要读入的TsinghuaUniv,这是因为SAS默认的字符变量的存储长度就是8个字节。UnivPlcZipMITBoston100023TsinghuaUnivBeijing100084加格式修饰符(:)不加格式修饰符(:)UnivPlc ZipMIT Boston 100023 .&字符型输入值可能包含一个或几个空格。因为空格是列表读入方式默认的分隔符,所以,如果要读入的数据值本身包括空格时就必须用此格式符。例5.6 空格为分隔符时,字符型输入值嵌有空格。data ;input name & $12. age;cards;Jiang Zhu 20Ann
展开阅读全文