1、目 录lSAS系统简介和基础操作 lSAS系统的工作环境;lSAS系统对数据文件的管理;l用编程读入数据建立SAS数据集;l数据加工;l数据汇总与报表制作;l制作图形展现数据lSAS宏入门 lSAS系统概述和基础操作 SAS SAS 系统lSAS系统是用于建立数据仓库并进行数据分析与决策支持的大型集成式模块化软件系统。l(其早期的名称为 Statistical Analysis System)l被誉为数据处理和统计分析领域的国际标准软件SAS SAS 系统软件构成 SAS系统是一个可由几个到二、三十个专用模块及面向行业的子系统组成的大型集成式软件包,其模块按功能大体上分为四类:l数据库部分:B
2、ase SAS,FSP,ACCESS,.l分析核心:QC,INSIGHT,STAT,ETS,.l开发呈现工具:AF,EIS,GRAPH,.l分布处理与数据仓库:CONNECT,WA,.SAS SAS 系统介绍 SAS系统是一个模块化、集成化的应用软件系统,使用SAS系统可以实现对数据的完全控制和充分利用。SAS系统主要完成以数据为中心的四大任务:l数据访问.l数据管理.l数据呈现.l数据分析.(所有的工作在一个平台内完成)信息交付信息交付 SAS的核心任务(从数据到信息)数据采集 管理 组织 利用 信息知识输出SAS SAS 系统的组件lSAS系统的核心:Base SAS模块,用于管理并呈现数
3、据,包含有一套编程语言以及一系列过程,是其它模块的基础:lSAS数据的存储:关系型数据存储:data set,data view;完全支持SQL标准的数据结 构和数据处理.多维数据存储:MDDB/Cube;没有结构性冗余的有效存储.数据挖掘库:DMDB;针对数据挖掘特点的数据存储.并行处理数据引擎:智能数据切分功能,优化的索引结构.SAS SAS 系统的组件l数据访问:通过SAS/ACCESS模块,可读取各种数据源,包括:u Informix,UDB,Sybase,Oracle,SQL Server;u cobol;u 对ODBC,OLE DB支持的数据源;u Windows下的文件:.DBF
4、,.Excel;u 文本格式的文件;u html格式的文件.u SAS SAS 系统的组件l数据统计分析:SAS/STAT 覆盖了当今世界上所有的实用数理统计分析方法,可 以适应各种不同模型和不同特点数据的需要;SAS/ETS 提供了丰富的计量经济学和时间序列分析方法;SAS/INSIGHT 一个功能强大的可视化的数据探索与分析的工具;SAS/OR 用于进行运筹运算;SAS/QC 功能强大的质量控制软件。SAS SAS 系统的组件lSAS数据仓库-SAS/WA:SAS的数据仓库技术集成地实现了数据访问和数据管理的任务,不仅能访问存在于不同地点地任何形式地数据,而且将之进行分类、合并、归纳、整理
5、及深层分析后得到有用的信息,这些支持决策地信息具有开放性,能被其它应用系统访问。SAS/WA:是非常优秀地可视化数据仓库管理工具,涉及数据仓库建立 工程中地各个环节。l OLAP系列:SAS/MDDB,Open OLAP Server,SAS/EISSAS SAS 系统的组件l表现工具:前端开发工具:SAS/AF 图形表现工具:SAS/GRAPH,可制作出各种二维和三维图形,如柱 状图,散点图,饼图等等;地理信息表现工具:SAS/GISlWeb产品:SAS/Intrnet:SAS/StoredProcess SAS/WebEIS:SAS/Portal SAS/Web Report Studio
6、 SAS/WebAF lSAS系统的基本运行环境SAS系统的工作环境lSAS系统可以有多种方式在各种操作系统中运行,常用的有:l交互方式:直接在SAS操作环境下进行操作,SAS系统执行任务并返回结果,可不断地根据返回的结果继续操作。l批作业方式:操作者向操作系统提交启动SAS作业的要求和全部要运行的SAS程序,再由操作系统安排这一作业运行,操作者可在事后获得SAS程序运行的全部结果。SAS系统的交互工作环境l启动 SAS(1)在Windows桌面系统下双击SAS图标;(2)运行 SAS 系统目录下(例C:SAS8)的可执行程序 sas.exe;(3)从“运行”打开或从“资料管理器”双击某个已有
7、的 SAS程序,也可启动SAS系统并调入该程序.SAS提供的基本运行环境lSAS提供了强有力的交互式用户界面:显示管理系统。l基本窗口及窗口条:Editor窗口:用于编写、编辑和执行SAS程序语句;Log窗口:显示当前会话程序运行的信息;Output窗口:显示程序的输出;Result窗口:管理输出结果;Explorer窗口:管理SAS系统中的文件;l下拉菜单或弹出菜单:l命令框、工具拦、信息窗:基本窗口基本窗口 基本窗口基本窗口显示管理系统运行一个简单的SAS程序:1、在Editor窗口中输入程序:procproc printprint data=sasuser.class;/*simple1
8、.sas*/var name sex age;where age gt 13;runrun;2、通过菜单、命令框、工具栏或功能键等都可提交程序;3、在Log中查看程序的运行信息,在Output窗口中查看运行结果。4、若需要重新找回程序,可通过功能键或菜单进行。显示管理系统其它一些窗口:lKEYS窗口:查看及改变功能键的设置;lOPTIONS窗口:查看及改变SAS的系统设置;lLIBNAME窗口:查看已存在的SAS数据库;lDIR窗口:查看某个SAS数据库的内容;lVAR窗口:查看SAS数据集的有关信息;显示管理系统l每个窗口都有自己相应的菜单选项;l可通过点击窗口条或在查看菜单打开不同的窗口;
9、l在工具菜单可以调用一些实用的工具以及定制系统的属性;如:可以通过选择菜单进行:表编辑、报表编辑、图形编辑以及文本编辑等等;l在选项子菜单下可以查看及定制系统的一些属性;如:在参数菜单中可以把过程的输出定制为HTML文件,保存在某个目录中,默认为临时库的目录。l在解决方案菜单中包含了部分SAS模块的菜单操作环境;lSAS系统对数据文件的管理SAS文件类型有多种不同的SAS文件类型,其中包括有:lSAS data set/view(SAS数据集/视图)SAS对数据的分析与呈现都是面对SAS数据集进行的,得到它们主要有三个途径:1)直接在SAS系统中输入数据;2)用SAS数据步(Data Step
10、)将外部数据文件转换为SAS 数据集;3)通过SAS/ACCESS软件访问其它的数据库管理系统。lSAS Catalog是保存有多种不同类型信息的SAS文件 SAS数据对象lSAS数据集通常分为两个部分:描述部分:包含数据的属性信息;数据部分:包含数值。l数据集的列称为变量(Variable),类似于域或字段,变量名最长为32个字符,以字母或下划线开始,可包含字母、数字和下划线;l数据集的行称为观测(Observation),相当于记录,观测数不受限制。lSAS数据视图只有描述部分,没有数据部分:但描述部分包含了足够的信息以找到保存在其他文件中的数据;数据视图减少了维护费用,源数据一旦改变,数
11、据视图将随着改变,可由SQL、ACCESS和DATA Step产生。SAS数据集l描述部分包含的信息包括有:变量的名字;变量的属性;数据集中的观测数;数据集创建或修改的时间等SAS数据对象l在编程环境下查看数据对象的描述部分可用以下过程:l浏览数据集的数据部分:l发命令:VT(或FSV)数据集名l提交程序:SAS数据库lSAS 数据集存储在SAS逻辑库中;lSAS 逻辑库还存储有其它的 SAS 专用文件(由SAS 创建和管理的文件);lSAS 逻辑库只是一个逻辑概念,指向了某个存储目录;lSAS文件用两级命名方式命名:llibname.SAS-filename(库标记.文件名)l库标记指的是逻
12、辑库的名字(最长8个字符,以字母或下划线开始,可包含字母、数字和下划线)。SAS数据库lSAS逻辑库分为永久库和临时库:永久库:SASUSER、SASHELP、自定义的库;临时库:WORK (关闭会话,内容将丢失)。自定义的库若不指定,关闭SAS后,库标记将失效,但内容被保存下来。l每次启动,SAS都自动产生两个SAS逻辑库:WORK(引用WORK库中的文件可省略库标记)SASUSERSAS数据库的设定l不同的主操作系统下逻辑库以不同的方式与主操作系统下的文件组织相联系;l在Windows下每个SAS逻辑库与某个子目录相连系,即SAS逻辑库包含指定子目录内的所有SAS文件(不含更下一级子目录内
13、容);例:SASUSER:C:documents and settings.V8 BASE DATA:C:base dataSAS数据库的设定l设定一个SAS逻辑库就是与操作系统的某个物理位置建立一个联系,让SAS系统可以对该位置上的SAS文件进行管理;l解除一个SAS逻辑库只是解除上述联系,并不删除该物理位置上的SAS文件。多个SAS逻辑库可与同一个物理位置相连接一个SAS逻辑库也可与多个物理位置相连接SAS数据库的设定l标记一个SAS逻辑库有两种方法:通过菜单进行;libname 库标记 引擎 数据源 选项;lengine(引擎)是一种访问架构,SAS的逻辑库都有一个引擎,这个引擎决定了S
14、AS可以访问和写入的SAS文件格式。它可以是V9,V8等不同的SAS版本,也可以是Oracle,DB2等表示外部数据格式文件,还有SPSS,DMBP等为一些其它软件格式文件使用的数据。不同引擎的库连接可构成混合引擎的库,实现同时看到库内不同引擎的文件。SAS数据库的设定lSAS9可以读出V8的SAS文件,可以修改和写入V8的Data Set和catalog;lV8数据集转为SAS9:Proc Migration,Proc Copy,Proc datasets的copy语句;lV8 Catalog转为SAS9:Proc Migration。SAS数据库用菜单设定1.按工具条上图标(新建逻辑库新建
15、逻辑库)可进入设定新的逻辑库的新新 建逻辑库建逻辑库窗口;2.浏览器窗口击活时,在下拉菜单中选:文件=新建=逻辑库 可进入设定SAS逻辑库的窗口。3.在SAS环境处右击鼠标,在弹出的菜单中选新建.,也可进入新建逻辑库新建逻辑库窗口。注意启动时使用选项的使用。利用SAS/CONNECT建立连接 利用SAS/CONNECT建立连接 lSAS/CONNECT软件提供了SAS应用的协同环境,提供了运行在不同平台上的SAS之间的通讯连接。l利用SAS/CONNECT,一个在本地运行的SAS程序可以与一个或多个远端SAS进程建立连接,在建立连接的基础上,还可以通过本地SAS访问到远端的数据,也可以递交程序
16、给远端SAS进程来执行,并将结果返回到本地。l在登录到远端系统之前,必须制定下列内容:通讯方法;需要连接的远程机器的IP地址;合适的脚本文件。利用SAS/CONNECT建立连接 l范例(与UNIX主机(S85)连接):%let ser_name=190.2.200.45;options remote=ser_name comamid=tcp;filename rlink!SASROOTtcpunix.scr;signon;l当与远端建立连接后,可在本地SAS通过运行libname建立库标记,访问远端数据.llibname 库标记名 “文件所在路径”server=ser_name;l利用窗口菜单
17、操作和创建SAS数据集SAS数据集的变量lSAS数据集的列称为变量(Variable),变量的类型:l字符型变量(Character Variable):可包含任何值,包括字母、数字和特殊字符,长度为1 至32,767个字节;l数值型变量(Numerical Variable):通常只包含数字,包括科学计数法和十六进制表示法 中的数字,保存为8个字节的浮点数;SAS数据集的缺失值处理l许多数据集中都会有缺失值,SAS对此作以下处理:对于数值型变量,这个值显示为一个点.;对于字符型变量,这个值显示为空格。例子:data tmp;length var1$8.;length var2$8.;leng
18、th var3 8.;length var4 8.;var2=abc;var4=123;run;输入格式和输出格式lSAS数据集数据的格式:输入格式(Informat):l指示SAS系统如何读入数据。输出格式(Format):l指示SAS系统如何输出数据。l使得数据表或报表中看到的数据的值并不一定就是数据的实际存储值;l使得SAS系统不同于其他的分析系统,只具有两种类型的变量就能进行广泛的数据处理和分析。输入格式和输出格式l它们的一般形式如下:informat-name.format-name.$代表变量是字符型Informat-name 输入格式名Format-name 输出格式名W 输入或
19、输出的总宽度(包括$和,).必须的分隔符d 小数部分的长度,默认为0l注意:所有输入输出格式必须包含一个点.作为名字的一部分输入格式和输出格式lSAS系统提供的几种常用输入输出格式:w.d 标准的数字型格式$w.标准的字符型格式commaw.d 数字中加入逗号dollarw.d 数字中加入逗号,数字前加入$datew.日期格式bestw.SAS选择最佳表示法l此外,用户还可以自定义格式。输入格式和输出格式l根据输入格式来读入数据,不同的格式读入为不同的存储数值:输入格式和输出格式l根据需要使用输出格式,使存储数值输出为所需要的数值,但并没有改变实际的存储值:SAS对日期时间值的处理lSAS日期
20、值、日期时间值在SAS内部都是以数值型变量存储:l如1962年3月3日被存储为792:即366+365+31+28+2=792.SAS对日期时间值的处理lSAS存储时间值为从午夜开始到此刻的秒数:如9:54存储为35640(9*60*60+54*60=35640)l一个日期时间值存储为从1960年1月1日午夜到这个日期时间之间的秒数:如1985年4月27日17点49分45秒被存储为799091385l将一个日期时间表示为一个常数:将日期或时间加上引号,后面加上d,如01JAN86d SAS对日期时间值的处理lSAS通过输入格式和输出格式将日期值与其他较易阅读的日期形式联系起来:l如1992年1
21、0月16日可表示为:MMDDYYw.101692(MMDDYY6.)或者 10/16/92(MMDDYY8.)DDMMYYw.161092(DDMMYY6.)或者 16/10/92(DDMMYY8.)DATEw.16OCT92(DATE7.)或者 16OCT1992(DATE9.)使用Viewtable浏览SAS数据集lViewtable提供一个显示数据集的窗口,它具有对数据集的浏览、编辑和创建的功能:l如何进入Viewtable窗口:(1)在SAS逻辑库对话框中双击数据集图标 (2)在命令栏键入命令:VT 数据集名 例如:VT SASHELP.CLASS使用Viewtable浏览SAS数据集
22、l通过Viewtable窗口打开的数据集有两种模式:浏览模式:只能浏览,不能进行修改;(默认模式)编辑模式:改为该模式后,可对数据进行一系列操作,包括:l设置条件取子集;l改变表和变量的属性;l排序、另存为其它格式文件;l根据数据作图、作报表等等.使用Viewtable新建SAS数据集l用Viewtable打开一个空白表:在命令栏输入:vt在相应的逻辑库点击鼠标右键,选新建,再选表l设定变量属性:在相应的列右击鼠标,输入变量名、标签、长度、输入输出格式等内容;l输入数据:在相应的单元格中输入相应的内容。SAS导入和导出数据lImport/Export 工具使你能够:导入 指的是从外部数据源读入
23、数据,并把它保存为SAS数据集;导出 指的是把一个SAS数据集保存为一个外部文件。l外部数据源包括有:Microsoft Excel 4,5,7,97 or 2000 电子表格;Microsoft Access 97 or 2000 表dBASELotus 1,3,or 4 电子表格delimited files 分隔文件导出数据流程导出数据流程 导出数据流程导出数据流程 开始:单击【File】菜单中的【Export Data】:导出数据流程导出数据流程 选择源数据集从LIBRARY下拉列表中选择数据库,从MEMBER下拉列表中选择数据集,单击NEXT按钮,得到下图:导出数据流程导出数据流程
24、选择目标数据集类型,单击NEXT按钮,得下图:导出数据流程导出数据流程 命名、定位目标数据集 在窗口键入保存位置,单击FINISH按钮完成,或单击NEXT按钮,得下图:导出数据流程导出数据流程 命名、定位导出程序命名、定位导出程序 在窗口键入程序名及其保存位置,单击在窗口键入程序名及其保存位置,单击FINISHFINISH按钮完成。按钮完成。语法:语法:PROC EXPORT DATA=sashelp.class PROC EXPORT DATA=sashelp.class OUTFILE=OUTFILE=“C:contact.xlsC:contact.xls”DBMS=EXCEL2000 R
25、EPLACE;DBMS=EXCEL2000 REPLACE;RUN;RUN;注释:注释:.DATA=sashelp.class.DATA=sashelp.class:定义源数据集:定义源数据集.OUTFILE=.OUTFILE=“C:contact.xlsC:contact.xls”:定义目标数据文件:定义目标数据文件.DBMS=EXCEL2000.DBMS=EXCEL2000:定义目标数据类型,:定义目标数据类型,.REPLACE.REPLACE:“替换替换”选项,表明目标数据集以替换方式更新。选项,表明目标数据集以替换方式更新。导入数据流程导入数据流程 导入数据流程导入数据流程 开始:单击
26、【File】菜单中的【Import Data】:导入数据流程导入数据流程 选择源数据集,单击NEXT按钮,得到下图:导入数据流程导入数据流程 选择目标数据集(SAS数据集),单击NEXT按钮,得下图:导入数据流程导入数据流程 命名、定位目标数据集 从Library下拉列表中选择数据库名,从Member下拉列表中选择(或输入)数据集名,单击Finish完成,或Next按钮,得到下图:导入数据流程导入数据流程 命名、定位导出程序命名、定位导出程序 在窗口键入程序名及其保存位置,单击在窗口键入程序名及其保存位置,单击FINISHFINISH按钮完成。按钮完成。语法:语法:PROC IMPORT OU
27、T=WORK.contact PROC IMPORT OUT=WORK.contact DATAFILE=c:contact.xls DATAFILE=c:contact.xls DBMS=EXCEL2000 REPLACE;DBMS=EXCEL2000 REPLACE;GETNAMES=YES;GETNAMES=YES;RUN;RUN;注释:注释:.OUT=WORK.contactOUT=WORK.contact:定义目标数据集:定义目标数据集.DATAFILE=.DATAFILE=“c:contact.xlsc:contact.xls”:定义源数据集:定义源数据集.DBMS=EXCEL20
28、00.DBMS=EXCEL2000:定义源数据类型:定义源数据类型.REPLACE.REPLACE:“替换替换”选项选项.GETNAMES=YES.GETNAMES=YES:“字段命名字段命名“选项,表明沿用源数据集中的第选项,表明沿用源数据集中的第1 1行为字段名。行为字段名。SAS编程基础SAS编程基本概念lSAS 程序由两种程序步组成,如图所示:SAS编程基本概念l数据步(Data Step):l以Data语句开始,用于创建和处理SAS数据集;Data步的主要功能有:创建一个新的数据集整理已有的数据集其一般形式为:DATA sas-data-set(option-1option-1=va
29、lue-1value-1.);Set 语句;其他sas语句;Run;SAS编程基本概念l过程步(Proc Step):l以Proc语句开始,用于分析处理SAS数据集中的数据;lPROC步常用来建立、管理和查询数据集,可方便的插入数据、抽取数据和更新数据。SAS编程基本概念l一个简单例子:Data simple;/*simple.sas*/Set sashelp.class;run;Proc print data=simple;var name age height weight;where age=13;run;SAS编程基本概念lSAS的每个程序步都由数个语句构成。l每个语句常以开始的关键词
30、称呼,用分号表示语句的结束。(如data a;,proc print;,label a=“A”;)lSAS语句书写的格式较为任意语句可以在任一列开始和结束;词间可任意加入空格和换行;一个语句可跨多行,多个语句可写在一行;l良好的书写格式便于程序的阅读SAS编程基本概念lSAS数据集存放在SAS逻辑库中,在读入数据前,要先建立SAS逻辑库。l用编程建立SAS逻辑库:一个物理位置指定一个逻辑库:llibname 库标记 引擎 数据源 选项;l如:libname basesasc:tmpbase sas;多个物理位置指定同一个逻辑库名:llibname 库标记 引擎(物理位置1 物理位置2);l其中
31、物理位置可以是一个用引号括起来的实际物理地址,也可以是一个已经设定的逻辑库名。llibname all(basesasd:sasdemodata);SAS编程基本概念l可以用以下过程查看逻辑库的内容和属性:Proc datasets lib=逻辑库名(sashelp);run;l可以用以下过程查看数据集的属性:Proc contents data=数据集名(sashelp.class);run;l可以用以下过程查看数据集的内容:Proc print data=数据集名(sashelp.class);run;SAS数据加工赋值语句l在数据步中使用赋值语句增加数据集中的变量:赋值语句的一般形式:V
32、ariable=表达式;表达式中可以包含SAS操作符和函数.SAS操作符用来执行基本的计算;SAS函数的一般形式:函数名(参数1,参数2,);(参数之间以逗号隔开,可以是常量、变量、表达式或其它 函数)赋值语句l常用的操作符:SAS函数l使用函数可以:进行一些数学计算(例如平方根);计算统计量(例如平均值或者总和);处理SAS数据(例如计算某一天是星期几)l字符运算函数:UPCASE(var)/LOWCASE(var):将字母全部转换为大写/小写;COMPRESS(var):将字符串中的多个空格压为一个;SUBSTR(var,m,n):能根据起始位置和所需长度从字符串中抽取部分字符字符运算函数
33、l字符运算函数:TRIM(var)/LEFT(var):截去字符串头部/尾部的空格;INDEX():在字符串中查找一个字符;SCAN(var,n,):根据分隔符,找出字符串中第n个单词;数值截取函数l以下是几个常用的数值截取函数:lINT(自变量):返回自变量的整数部分;lROUND(自变量,精度):返回按指定的精度对自变量进行四舍五入的结果;lCEIL(自变量):返回不小于自变量的最小整数部分。l以下是使用这些函数的简单例子:Data test;/*test1.sas*/x=326.54;integer=int(x);over=ceil(x);tenth=round(x,0.1);run;p
34、roc print data=test;run;与日期有关的函数l函数TODAY、TIME和DATE(都不写自变量):l函数 返回值 典型用法lTODAY()当前系统的日期值 now=today();lTIME()当前系统的时间值 current=time();lDATE()当前系统的日期值 time=date();l年月日的提取(自变量都是表示SAS日期值的数值):l函数 返回值 例DAY(自变量)自变量的月内日期值(1-31)day(02dec66d)=2WEEKDAY(自变量)自变量的周内参数(1-7)weekday(02dec66d)=6MONTH(自变量)自变量的月份值(1-12)m
35、onth(02dec66d)=12QTR(自变量)自变量的季度值(1-4)qtr(02dec66d)=4YEAR(自变量)自变量的年份值 year(02dec66d)=1966lWEEKDAY(自变量)的值为1,表示的周日,周一为2,依此类推。l此外还有日期值的整合函数MDY,日期时间运算函数INTNX和INTCK等等数值与字符的转换l字符自动转换为数值,一般地,系统对以下情况进行字符到数值的自动转换:将字符变量赋值给一个已规定为数值型的变量,如:rate=payrate;在算术运算中使用字符型变量,如:salary=payrate*hours;在比较运算中与数值变量进行比较,如:if pay
36、rate=rate,但在WHERE语句中和数据集选项WHERE的表达式中不进行自动转换;在一个需要数值型变量的函数中引用字符型变量,如:newrate=sum(payrate,raise);数值与字符的转换函数l函数INPUT实现将自变量的值由字符转换为数值,它的一般形式为:INPUT(源数据,输入格式)其中:源数据:可以是一个字符型变量、字符常数值或要转为数值的表达式;输入格式:指明对源数据进行转换的输入格式;函数的返回值是源数据按输入格式转换的结果;INPUT函数也可用于字符到字符的转换;数值与字符的转换函数l自动数值到字符的转换类似于字符到数值的转换,一般在以下的情况下发生:将数值型变量
37、的值赋值给一个已规定为字符型的变量;在字符运算中使用数值型变量;在一个需要字符型自变量的函数中引用数值型变量。l函数PUT完成数值到字符的转换,它的一般形式为:PUT(源数据,输出格式)其中:源数据:可以是要转换为字符值的变量、常数或表达式;输入格式:指明对源数据转换的输出格式;PUT函数总是返回一个字符串,它是源数据按输出格式输出的结果;设定变量属性的语句l常用的DATA步中设定变量属性的语句:LENGTH 变量名 长度;设定变量的长度和在数据集中的顺序;INFORMAT 变量名 输入格式;设定变量的输入格式;FORMAT 变量名 输出格式;设定变量的输出格式;LABEL 变量名=字符串输入
38、格式;设定变量的标签;条件转移语句条件转移语句条件转移语句l几个比较操作符用法的例子:if dest=LON if dest in(LON,PAR)if flight=219 if boarded lt 150 if mailfreight if dest contains lon 数据集的选项l在数据步和过程步读取或写入数据集时可以加入选项来控制读写的过程,常用的有以下几个方面:更改数据集中的变量名;选择数据集中的变量;选择数据集中的观测;提供数据集的密码等.l数据集的选项加在数据集名后,用一对圆括号限定,一般形式为:(选项1值1 选项2值2)l如:重命名数据集中的变量:Data test(
39、rename=(name=lastname);数据集的选项l一个例子:ldata class(keep=name sex height hwratio);/*在新数据集中保留所列变量*/lset sashelp.class(drop=age);/*在读入时没读进AGE*/lhwratio=height/weight;/*赋值语句,创建新的变量*/lrun;lproc print data=class;run;/*option1.sas*/数据集观测的选择lWhere语句:可在数据步和大多数的程序步中使用,用于选择观测进入数据集,它的一般形式为:Where 条件表示式lIf语句:可在数据步和大多
40、数的程序步中使用,用于选择观测进入数据集,它的一般形式为:If 条件表示式用Delete语句可以选择那些数据不被写入到数据集 用法:if 条件表示式 then delete;按变量值对数据集排序l使用SORT过程对数据集进行排序,一般形式为:PROC SORT DATA=数据集;BY 变量名列 变量名列;RUN;l其中:若不使用OUT=输出数据集名,排序后的结果将覆盖原来的数据集;可按多个变量进行排序;可以按升序或降序进行排序;缺失值将被视为最小的值;不产生打印输出结果。按变量值对数据集排序l如对数据集sashelp.class按AGE的降序进行排列,且AGE相同的记录按HEIGHT的值降序排
41、列,可用以下程序:proc sort data=sashelp.class out=sorted;/*sort1.sas*/by descending age descending height;run;proc print out=sorted;run;面向多个数据集的数据加工数据集的拼接与合并l使用数据步(Data Step)对多数据进行操作通常有两种方式:l拼接:在数据集的拼接中,增加了数据集的记录数;l合并:在数据集的合并中,增加了数据集的字段数;数据集的拼接l用SET语句拼接SAS数据集:DATA 新数据集;SET 输入数据集1 输入数据集2;RUN;l/*如果不使用DROP=和KE
42、EP=选项,在新的数据集中将包含所有旧数据集的变量*/数据集的合并l用MERGE语句合并SAS数据集:DATA 新数据集;MERGE 输入数据集1 输入数据集2;BY 变量;RUN;l使用MERGE语句可以合并任意多个数据集;lMERGE输入数据集必须预先按该BY变量排序;一对一匹配的对接一对多匹配的对接不匹配的对接用SQL过程查询和加工数据 lSAS系统使用PROC SQL实现对SQL的支持。l使用SQL过程可以:读入、展示和加工SAS数据文件;在表中增加和修改数据值;增加、修改和删除表的列;合并数据表;创建新的数据表;生成报表。用SQL过程查询和加工数据 l使用SQL的SELECT语句显示
43、数据表sashelp.class中的变量NAME、AGE和HEIGHT,并选出性别是男的学生。lproc sql;/*sql1.sas*/ltitle City and Years of Service;lselect name,age,height lfrom sashelp.classlwhere sex=M;lquit;lselect后的是变量名,from后的是数据集名。用SQL过程查询和加工数据 l使用SQL的GROUP BY语句生成新的数据集,要求根据不同日期汇总原料量,新数据集中按日期排序.lproc sql;/*sql1.sas*/lcreate table tmp1 aslse
44、lect date_pro,sum(weightfx)as weightlfrom base.lz_tmp1lgroup by date_prolorder by date_pro;lquit;数据汇总与报表制作数据汇总与报表制作数据汇总与报表制作l利用SAS提供的各种过程可以制作各种风格的报表,这些过程都是面向SAS数据集的,所以要使用这些过程制作报表,我们必须要先利用前面的知识将报表中所需要的信息整合到一个数据集中,从表现数据集的内容来看,报表可分为两类:显示详细数据的报表:将数据集中每条记录的内容直接显示,最常使用的是PRINT过程实现;显示汇总数据的报表:将数据集中的数据按指定的方式分
45、类汇总,计算各项统计指标,汇总报表可以更集中地反映数据中某一方面的总貌,常使用TABULATE过程制作。PrintPrint过程过程l用Proc print产生列表报表,有以下形式:PROC print DATA=数据集名 选项;VAR 变量序列;/*控制出现的变量和顺序*/WHERE 条件表达式;/*控制出现的观测*/SUM 变量序列;/*计算变量的总和*/BY 变量序列;/*进行分组和求小计,但要先对 数据集进行排序*/RUN;PrintPrint过程过程l一个应用实例:proc print data=sashelp.class;/*print1.sas*/var name age sex
46、 height weight;where age gt 13;sum age;run;l如果要根据性别对数据进行分组并求每一组的小计,怎样修改?l先对数据集根据sex字段排序;l在PRINT过程中加入BY语句。改进列表报表改进列表报表 l改进列表报表的相关语句:lTITLEn 文本;(加入标题)lFOOTNOTEn 文本;(加入脚注)注意:1.如果没有定义标题,缺省的标题是The SAS System;2.n的取值范围从1到10;3.使用了这两个语句后,所定义的标题和脚注将一直有 效,直到另一个TITLE和FOOTNOTE语句被执行;4.用TITLE1;和FOOTNOTE1;语句可以取消所有已
47、定义过 的标题和脚注。改进列表报表改进列表报表 lLABEL语句:LABEL 变量1label1 变量2label2 变量n=labeln;LABEL语句实际上为它定义的每个变量产生一个标签,标签中可以输入中文,用于PRINT过程时,要在PRINT语句中加入LABEL选项。FORMAT语句,控制数据值的输出格式:format 变量名 输出格式名;改进列表报表改进列表报表 l一个实例:proc print data=basedata.lz_simple1(obs=20)label;/*print2.sas*/var date_pro COIL_NUM material THICK_FX WIDT
48、H_FX WEIGHTFX;title 冷轧数据集市;title2 主题号SU5501;footnote 时间:2003-06-22;footnote2 地点:教陪中心;label thick_fx=厚度 width_fx=宽度 WEIGHTFX=重量;format date_pro yymmdd10.;run;FORMAT过程过程 l使用Proc format自定义输入格式和输出格式:lPROC FORMAT;VALUE 格式名 取值范围1指标记1 取值范围2指标记2 ;RUN;l使用PROC FORMAT定义的格式,可以在PRINT过程中用FORMAT语句引用它们。FORMAT过程过程 l
49、在VALUE语句中,格式可以被赋予:单个数字;例如:proc format;value sexfmt 1=女 2=男 other=缺失值;run;l在这里定义了格式sexfmt,如果某个变量被赋予这种格式时,变量中的值为1的都将被标记为女,值为2的将被标记为男,值既不为1又不为2的将被标记为缺失值。FORMAT过程过程 l在VALUE语句中,格式可以被赋予:某一数值范围;例如:proc format;value heifmt low-60=低于平均 60-65=平均 65-high=高于平均;run;l在这里定义了格式heifmt,如果某个变量被赋予这种格式时,变量中的值在最小值与60之间的都
50、将被标记为低于平均,在60到65之间的被标记为平均,在65到最大值之间的将被标记为高于平均。FORMAT过程过程 l在VALUE语句中,格式可以被赋予:字符、字符串或某一范围的字符;例如:proc format;value$sexfmt F=女 M=男 other=缺失;run;l字符型格式只能被用于字符型变量。FORMAT过程过程 l一个实例:proc print data=sashelp.class label;/*format.sas*/format sex$sexfmt;run;注意字符型格式的调用方式。TABULATE过程过程 l使用PROC TABULATE产生汇总报表:当一个SA