《SAS编程技术SAS编程基础》由会员分享,可在线阅读,更多相关《SAS编程技术SAS编程基础(155页珍藏版)》请在金锄头文库上搜索。
1、第2章 SAS编程基础清华大学经管学院 朱世武 Z Resdat样本数据: SAS论坛: SAS语言组件 SAS 文件 由SAS创建、储存、管理的文件就是SAS文件 。所有的SAS文件都保存在SAS逻辑库中。 最常用的SAS文件: l SAS数据集l SAS目录册 SAS外部文件 SAS不能直接识别的数据文件称为外部文件。外 部文件一般用于储存数据。外部文件一般用来储存: l 要读入SAS数据文件的原始数据 l SAS程序语句 l 过程步输出DBMS文件SAS软件可以和其它数据库产品进行数据文 件转换。 SAS语言元素SAS语言由语句、表达式、选项、格式、以 及和其它编程语言名称类似的函数组成
2、。SAS有两种语句 l 数据步 l 过程步SAS文件系统 SAS逻辑库由一组SAS文件组成。SAS软件系统的信息组织有两层,第一层是SAS逻辑库,第二层是SAS文件。SAS逻辑库是一个逻辑概念,本身不是物理实体,它对应的实体是操作系统下一个文件夹或几个文件夹中的一组SAS文件。 逻辑库 逻辑库名与引用SAS文件 逻辑库名是SAS名,长度不能超过8个字节。如SAS逻辑库: ResDat, SASHELP, SASUSER, WORK等。建立SAS逻辑库的方法:l 用菜单操作;l 用LIBNAME语句。语句格式: LIBNAME libref SAS-data-library 语法说明: Libr
3、ef 逻辑库名 SAS-data-library 逻辑库对应的物理地址 Engine 引擎名称(缺失时为默认引擎)例2.1 用LIBNAME语句创建SAS逻辑库。 Libname ResDat d:ResDat;多个个文件夹创建一个SAS逻辑库: Libname a (d:resbd,d:resfin);例2.2 引用非临时库的SAS文件时必须使用两级命名方式,而 引用临时库的SAS文件时,可以直接使用文件名,效果等同于 work.文件名。data=ResDat.Idx000001;临时库和永久库临时逻辑库是指它的内容只在启动SAS时存在,退出SAS时内容完 全被删除。系统缺省的临时逻辑库为W
4、ORK.永久逻辑库是指它的内容在SAS关闭对话之后仍旧保留,直到再次 修改或者删除。SAS系统中除了WORK以外的逻辑库都是永久库。库引擎库引擎是一组规定格式向逻辑库读写文件的内部指令。利 用库引擎SAS系统可以直接访问其它SAS版本创建的SAS 文件和外部数据库格式的数据文件。 每个SAS逻辑库都对应一个库引擎。库引擎功能包括:l 读取和写入数据; l 列出库中的文件; l 删除和重命名文件。SAS通过不同库引擎读写不同格式的文件。每个SAS 引擎都有着自身的运行特性。比如l 运行由旧版本SAS软件生成的文件;l 读取由其它软件生成的数据库文件;l 存储和访问硬盘或者tape上的文件;l 决
5、定文件中的变量和观测如何放置;l 将文件从物理位置地址读取放入到内存;l 在不同的操作系统之间传输SAS文件。数据集 SAS数据集有两类:l SAS数据文件l SAS数据视图SAS数据文件同时描述信息 和存储数据值。SAS数据视图并不实际存储 数据,而只是一个查询语句 。class是数据视图class1是数据文件变量观 测SAS数据集组成部分包括:l 描述信息;l 数据值。数据文件SAS数据文件是包含描述信息和数据值的SAS数据集。一般来说,SAS数据文件又分为:l 普通的SAS数据文件:SAS格式的数据文件。l 接口数据文件:以其它数据软件格式储存数据的数据文件。SAS提供对应的引擎来对这些
6、文件中的数据进行读取和编写,如ORACLE DB2,SYBASE,ODBC,BMDP,SPSS和OSIRIS。虽然数据文件与视图文件在应用时没有任何区别。但这两 者之间也有一定的差异。l 前面已经提到二者最大的不同就是数据文件实际储存数值,视图只是包含表的描述信息以及一组用来读取数据 的查询语句,并不实际存储数据。 l 数据文件是静态的,而视图则是动态的。 l SAS数据文件可以被索引,索引可以使SAS在搜索数 据的时候变得更快。而SAS视图不能被索引。 l 数据视图 SAS数据视图就是用来从其它文件中读取数据的一种SAS文 件。它只包括数据集的描述信息,如数据类型、变量长度等 ,再加上如何从
7、其它文件中提取数据所要求的信息。 SAS视图一般分为两种:l Native View, 由数据步或者SQL过程创建。l Interface View, 由SAS/ACCESS软件创建。Interface View可以读写其它数据库管理系统(DBMS)中的数据库,如DB2或 ORACLE数据库等。数据视图的使用优势l 可以使用连接多个表的视图来合并数据集。l 数据视图可以节省大量的空间。l 数据视图可以保证读取的数据集永远都是最新的。l 更改一个数据视图只需要改变这个视图的查询语句。l 使用SAS/CONNET软件,视图可以将多个不同主机电脑上的数据文件整合,以整体的形式呈现。数据步视图数据步视
8、图包含用于从多个数据源中读取数据的数据步程序,这些数据源包括:l 原始数据文件;l SAS数据文件;l PROC SQL视图;l SAS/ACCESS 视图;l DB2,ORACLE,或者其它DBMS数据。语法格式:Data 数据集名称/ view=数据集名称; SAS语句.; Run;例2.3 创建数据步视图。Data Resdat.class1/view=Resdat.class1; set Resdat.class; run;1 data Resdat.class1/view=Resdat.class1;2 Resdat.class1; 3 run;NOTE: DATA STEP 视图已
9、保存在文件 Resdat.class1 中 。 NOTE: 存储的 DATA STEP 视图无法在不同的操作系统下运行。日志中信息PROC SQL视图PROC SQL视图为一个带有名称的PROC SQL查询。它可以读写的数据源同数据步视图。 proc sql; create view resdat.e as select * from resdat.class; quit;日志中信息:4 proc sql;5 create view resdat.e as select * from resdat.class; NOTE: SQL 视图 resdat.E 已定义。 6 quit;存储编译的DA
10、TA步程序语句格式 DATA data-set-name(s) / PGM=stored-program-name );data-set-name数据集名称 stored-program -name存储编译 的DATA步程序名称password- option给DATA步程序名称分配一个密码source-option 存储或编译源码 语法说明目录册文件SAS目录册文件是特殊的SAS文件,用来存放多种不同种 类的信息文件。这些信息文件都很小,每个信息文件都被 称为一个条目(entry), 条目有多种不同的类型。一些目 录条件包含一些系统信息如功能键定义信息。SAS语言元素 数据集选项数据集选项用
11、在SAS数据集名称后的括号中,多个选项之间用 空格隔开。括号中的数据集选项可以对数据集进行如下操作: l 重新命名变量; l 选择需要的观测; l 输出数据集中保留或删除的变量; l 数据集加密。语句格式: Data-set-name(Data-set-options) (option-1=value-1)例2.4 数据集选项举例。 data scores(keep=team game1 game2 game3); /*scores中只保留team,game1game2 game3这4个变量) proc print data=new(drop=year); /*去掉变量year*/ set o
12、ld(rename=(date=Start_Date);/* 将date改名*/输入和输出格式 输出格式format是SAS用来确定如何输出或写出数 据值的指令,用FORMAT控制数据值在输出时所使用的格式。输入格式informat是SAS用来确定如何将数据读入变量的指令。如果在输入或输出数据集的过程中没有设定变量的 输入和输出格式,系统会自动使用原数据集中的这 个变量原有的输入输出格式。语句格式: format. informat. 格式说明:$指定为字符格式,如果该项空缺,则默 认是数值格式 format规定有效SAS输出格式Informat规定有效SAS输入格式w设定输入输出的长度,一般
13、来说是数据 所占的列的数目 d设定数值数据中小数点的位数函数和CALL子程序 SAS函数对数据参数进行计算处理并返回一个值。大多数函数所使用的参数是由用户提供的,一小部分函数使用系 统提供的参数。 CALL子程序用来改变变量值,或执行一些系统功能。 CALL子程序类似于函数,但是不能在赋值语句中使用,所 有的SAS CALL子程序都只能被CALL语句使用。 语句SAS语句就是一系列关键词、SAS名称、算符以及特殊字符 的组合。所有的SAS语句以分号结尾。SAS语句一般分为数据步语句与过程步语句,以及可以用在 SAS程序任何地方的全局通用语句。KEYWORD parameteroptions;关
14、键词 参数 选项;其中:粗体-必须按显示形式书写的关键词;白正体-用户提供的信息;12的所有观测例18.66 当一个文件的许多观测被删除后,可以使用PURGE语 句对观测进行重新排序。proc iml; use class; edit class; find all where(name=John) into d;print d; delete point d; list all; purge; list all; run;由矩阵创建SAS数据集 v 使用CREATE和APPEND语句从一个矩阵创建一个SAS 数据集,矩阵的列变成数据集的变量,矩阵的行变成数据 集的观测。因而一个nm矩阵变成一
15、个含有m个变量和n个 观测的数据集。CREATE语句打开一个新的SAS数据集作为 输入和输出对象,APPEND语句把数据写到数据集后面。带有FROM选项的CREATE语句 CREATE SAS-data-set FROM matrix COLNAME=column-name ROWNAME=row-name ;其中: SAS-data-set要创建的数据集名; matrix为包含数据的矩阵名; column-name为数据集中的变量名; row-name为数据集中增加一个包含行标题的变量名。例18.67 用CREATE语句的FROM选项创建SAS数据集。 proc iml; use class; read all var age height weight; htwt=height/weight; show names;create ratio from htwtcolname=htwt;append from htwt; show datasets; show contents; close ratio;SYMBOL ROWS COLS TYPE SIZE- - - - -AGE 19 1 num 8HEIGHT 19 1 num 8HTWT 19 1 n