《SAS基础教程PPT课件》由会员分享,可在线阅读,更多相关《SAS基础教程PPT课件(154页珍藏版)》请在金锄头文库上搜索。
1、目 录SAS系统简介和基础操作 SAS系统的工作环境;SAS系统对数据文件的管理;用编程读入数据建立SAS数据集;数据加工;数据汇总与报表制作;制作图形展现数据SAS宏入门 SAS系统概述和基础操作 SAS SAS 系统SAS系统是用于建立数据仓库并进行数据分析与决策支持的大型集成式模块化软件系统。(其早期的名称为 Statistical Analysis System)被誉为数据处理和统计分析领域的国际标准软件SAS SAS 系统软件构成 SAS系统是一个可由几个到二、三十个专用模块及面向行业的子系统组成的大型集成式软件包,其模块按功能大体上分为四类:数据库部分: Base SAS,FSP,
2、ACCESS,.分析核心: QC,INSIGHT,STAT,ETS,.开发呈现工具: AF,EIS,GRAPH,.分布处理与数据仓库: CONNECT,WA,.SAS SAS 系统介绍 SAS系统是一个模块化、集成化的应用软件系统,使用SAS系统可以实现对数据的完全控制和充分利用。SAS系统主要完成以数据为中心的四大任务:数据访问.数据管理.数据呈现.数据分析. (所有的工作在一个平台内完成)信息交付信息交付 SAS的核心任务(从数据到信息)数据采集 管理 组织 利用 信息知识输出SAS SAS 系统的组件SAS系统的核心: Base SAS模块,用于管理并呈现数据,包含有一套编程语言以及一系
3、列过程,是其它模块的基础:SAS数据的存储: 关系型数据存储:data set,data view;完全支持SQL标准的数据结 构和数据处理. 多维数据存储:MDDB/Cube;没有结构性冗余的有效存储. 数据挖掘库:DMDB;针对数据挖掘特点的数据存储. 并行处理数据引擎:智能数据切分功能,优化的索引结构.SAS SAS 系统的组件数据访问: 通过SAS/ACCESS模块,可读取各种数据源,包括:u Informix,UDB,Sybase,Oracle,SQL Server;u cobol;u 对ODBC,OLE DB支持的数据源;u Windows下的文件:.DBF,.Excel;u 文本
4、格式的文件;u html格式的文件.u SAS SAS 系统的组件数据统计分析: SAS/STAT 覆盖了当今世界上所有的实用数理统计分析方法,可 以适应各种不同模型和不同特点数据的需要; SAS/ETS 提供了丰富的计量经济学和时间序列分析方法; SAS/INSIGHT 一个功能强大的可视化的数据探索与分析的工具; SAS/OR 用于进行运筹运算; SAS/QC 功能强大的质量控制软件。 SAS SAS 系统的组件SAS数据仓库-SAS/WA: SAS的数据仓库技术集成地实现了数据访问和数据管理的任务,不仅能访问存在于不同地点地任何形式地数据,而且将之进行分类、合并、归纳、整理及深层分析后得
5、到有用的信息,这些支持决策地信息具有开放性,能被其它应用系统访问。 SAS/WA:是非常优秀地可视化数据仓库管理工具,涉及数据仓库建立 工程中地各个环节。 OLAP系列: SAS/MDDB,Open OLAP Server, SAS/EISSAS SAS 系统的组件表现工具: 前端开发工具:SAS/AF 图形表现工具:SAS/GRAPH,可制作出各种二维和三维图形,如柱 状图,散点图,饼图等等; 地理信息表现工具:SAS/GISWeb产品: SAS/Intrnet: SAS/StoredProcess SAS/WebEIS: SAS/Portal SAS/Web Report Studio S
6、AS/WebAF SAS系统的基本运行环境SAS系统的工作环境SAS系统可以有多种方式在各种操作系统中运行,常用的有:交互方式:直接在SAS操作环境下进行操作,SAS系统执行任务并返回结果,可不断地根据返回的结果继续操作。批作业方式:操作者向操作系统提交启动SAS作业的要求和全部要运行的SAS程序,再由操作系统安排这一作业运行,操作者可在事后获得SAS程序运行的全部结果。SAS系统的交互工作环境启动 SAS (1) 在Windows桌面系统下双击SAS图标; (2) 运行 SAS 系统目录下(例C:SAS8)的可执行程序 sas.exe; (3) 从 “运行” 打开或从 “资料管理器” 双击某
7、个已有的 SAS程序,也可启动SAS系统并调入该程序.SAS提供的基本运行环境SAS提供了强有力的交互式用户界面:显示管理系统。基本窗口及窗口条:Editor窗口:用于编写、编辑和执行SAS程序语句;Log窗口:显示当前会话程序运行的信息;Output窗口: 显示程序的输出;Result窗口:管理输出结果;Explorer窗口:管理SAS系统中的文件;下拉菜单或弹出菜单:命令框、工具拦、信息窗: 基本窗口基本窗口 基本窗口基本窗口显示管理系统运行一个简单的SAS程序:1、在Editor窗口中输入程序: procproc printprint data=sasuser.class;/*simpl
8、e1.sas*/ var name sex age; where age gt 13; runrun;2、通过菜单、命令框、工具栏或功能键等都可提交程序;3、在Log中查看程序的运行信息,在Output窗口中查看运行结果。4、若需要重新找回程序,可通过功能键或菜单进行。显示管理系统其它一些窗口:KEYS窗口:查看及改变功能键的设置;OPTIONS窗口: 查看及改变SAS的系统设置;LIBNAME窗口: 查看已存在的SAS数据库;DIR窗口:查看某个SAS数据库的内容;VAR窗口:查看SAS数据集的有关信息;显示管理系统l每个窗口都有自己相应的菜单选项;l可通过点击窗口条或在查看菜单打开不同的窗
9、口;l在工具菜单可以调用一些实用的工具以及定制系统的属性; 如:可以通过选择菜单进行: 表编辑、报表编辑、图形编辑以及文本编辑等等;l在选项子菜单下可以查看及定制系统的一些属性; 如:在参数菜单中可以把过程的输出定制为HTML文件, 保存在某个目录中,默认为临时库的目录。l在解决方案菜单中包含了部分SAS模块的菜单操作环境; SAS系统对数据文件的管理SAS文件类型有多种不同的SAS文件类型,其中包括有:SAS data set/view(SAS数据集/视图) SAS对数据的分析与呈现都是面对SAS数据集进行的,得到它们主要有三个途径: 1)直接在SAS系统中输入数据; 2)用SAS数据步(D
10、ata Step)将外部数据文件转换为SAS 数据集; 3)通过SAS/ACCESS软件访问其它的数据库管理系统。SAS Catalog是保存有多种不同类型信息的SAS文件 SAS数据对象SAS数据集通常分为两个部分:描述部分:包含数据的属性信息;数据部分:包含数值。数据集的列称为变量(Variable),类似于域或字段,变量名最长为32个字符,以字母或下划线开始,可包含字母、数字和下划线;数据集的行称为观测(Observation),相当于记录,观测数不受限制。SAS数据视图只有描述部分,没有数据部分:但描述部分包含了足够的信息以找到保存在其他文件中的数据;数据视图减少了维护费用,源数据一旦
11、改变,数据视图将随着改变,可由SQL、ACCESS和DATA Step产生。SAS数据集描述部分包含的信息包括有:变量的名字;变量的属性;数据集中的观测数;数据集创建或修改的时间等SAS数据对象在编程环境下查看数据对象的描述部分可用以下过程:浏览数据集的数据部分:发命令:VT(或FSV) 数据集名提交程序:SAS数据库SAS 数据集存储在SAS逻辑库中;SAS 逻辑库还存储有其它的 SAS 专用文件(由SAS 创建和管理的文件);SAS 逻辑库只是一个逻辑概念,指向了某个存储目录;SAS文件用两级命名方式命名:libname.SAS-filename (库标记.文件名) 库标记指的是逻辑库的名
12、字(最长8个字符,以字母或下划线开始,可包含字母、数字和下划线)。SAS数据库SAS逻辑库分为永久库和临时库:永久库:SASUSER、SASHELP、自定义的库;临时库:WORK (关闭会话,内容将丢失)。自定义的库若不指定,关闭SAS后,库标记将失效,但内容被保存下来。每次启动,SAS都自动产生两个SAS逻辑库:WORK(引用WORK库中的文件可省略库标记)SASUSERSAS数据库的设定不同的主操作系统下逻辑库以不同的方式与主操作系统下的文件组织相联系;在Windows下每个SAS逻辑库与某个子目录相连系,即SAS逻辑库包含指定子目录内的所有SAS文件 (不含更下一级子目录内容); 例:S
13、ASUSER: C:documents and settings.V8 BASE DATA:C:base dataSAS数据库的设定设定一个SAS逻辑库就是与操作系统的某个物理位置建立一个联系,让SAS系统可以对该位置上的SAS文件进行管理;解除一个SAS逻辑库只是解除上述联系,并不删除该物理位置上的SAS文件。多个SAS逻辑库可与同一个物理位置相连接一个SAS逻辑库也可与多个物理位置相连接SAS数据库的设定标记一个SAS逻辑库有两种方法:通过菜单进行;libname 库标记 引擎 数据源 选项;engine(引擎)是一种访问架构,SAS的逻辑库都有一个引擎,这个引擎决定了SAS可以访问和写入
14、的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建立连接 SAS/CONNECT软件提供了SAS应用的协同环境,提供了运行在不同平台上的SAS之间的通讯连接。利用SAS/CONNECT,一个在本地运行的SAS程序可以与一个或多个远端SAS进程建立连接,在建立连接的基础上,还可以通过本地SAS访问到远端的数据,也可以递交程序给远端
16、SAS进程来执行,并将结果返回到本地。在登录到远端系统之前,必须制定下列内容:通讯方法;需要连接的远程机器的IP地址;合适的脚本文件。利用SAS/CONNECT建立连接 范例(与UNIX主机(S85)连接):%let ser_name=190.2.200.45;options remote=ser_name comamid=tcp;filename rlink !SASROOTtcpunix.scr;signon;当与远端建立连接后,可在本地SAS通过运行libname建立库标记,访问远端数据.libname 库标记名 “文件所在路径” server=ser_name; 利用窗口菜单操作和创建
17、SAS数据集SAS数据集的变量lSAS数据集的列称为变量(Variable),变量的类型:l字符型变量(Character Variable): 可包含任何值,包括字母、数字和特殊字符,长度为1 至32,767个字节;l数值型变量(Numerical Variable): 通常只包含数字,包括科学计数法和十六进制表示法 中的数字,保存为8个字节的浮点数;SAS数据集的缺失值处理许多数据集中都会有缺失值,SAS对此作以下处理:对于数值型变量,这个值显示为一个点.;对于字符型变量,这个值显示为空格。 例子: data tmp; length var1 $8.; length var2 $8.; l
18、ength var3 8.; length var4 8.; var2=abc; var4=123; run;输入格式和输出格式SAS数据集数据的格式:输入格式(Informat):指示SAS系统如何读入数据。输出格式(Format):指示SAS系统如何输出数据。使得数据表或报表中看到的数据的值并不一定就是数据的实际存储值;使得SAS系统不同于其他的分析系统,只具有两种类型的变量就能进行广泛的数据处理和分析。输入格式和输出格式它们的一般形式如下:informat-name.format-name.$ 代表变量是字符型Informat-name 输入格式名Format-name 输出格式名W 输
19、入或输出的总宽度(包括$和,). 必须的分隔符d 小数部分的长度,默认为0注意:所有输入输出格式必须包含一个点.作为名字的一部分输入格式和输出格式SAS系统提供的几种常用输入输出格式:w.d 标准的数字型格式$w. 标准的字符型格式commaw.d 数字中加入逗号dollarw.d 数字中加入逗号,数字前加入$datew. 日期格式bestw. SAS选择最佳表示法此外,用户还可以自定义格式。输入格式和输出格式根据输入格式来读入数据,不同的格式读入为不同的存储数值:输入格式和输出格式根据需要使用输出格式,使存储数值输出为所需要的数值,但并没有改变实际的存储值:SAS对日期时间值的处理SAS日期
20、值、日期时间值在SAS内部都是以数值型变量存储:如1962年3月3日被存储为792: 即366+365+31+28+2=792.SAS对日期时间值的处理SAS存储时间值为从午夜开始到此刻的秒数:如9:54存储为35640(9*60*60+54*60=35640)一个日期时间值存储为从1960年1月1日午夜到这个日期时间之间的秒数:如1985年4月27日17点49分45秒被存储为799091385将一个日期时间表示为一个常数:将日期或时间加上引号,后面加上d,如01JAN86d SAS对日期时间值的处理SAS通过输入格式和输出格式将日期值与其他较易阅读的日期形式联系起来:如1992年10月16日
21、可表示为: MMDDYYw. 101692(MMDDYY6.)或者 10/16/92(MMDDYY8.) DDMMYYw. 161092(DDMMYY6.)或者 16/10/92(DDMMYY8.) DATEw. 16OCT92(DATE7.) 或者 16OCT1992(DATE9.)使用Viewtable浏览SAS数据集Viewtable提供一个显示数据集的窗口,它具有对数据集的浏览、编辑和创建的功能:如何进入Viewtable窗口: (1)在SAS逻辑库对话框中双击数据集图标 (2)在命令栏键入命令: VT 数据集名 例如: VT SASHELP.CLASS使用Viewtable浏览SAS
22、数据集通过Viewtable窗口打开的数据集有两种模式:浏览模式:只能浏览,不能进行修改;(默认模式)编辑模式:改为该模式后,可对数据进行一系列操作,包括:设置条件取子集;改变表和变量的属性;排序、另存为其它格式文件;根据数据作图、作报表等等.使用Viewtable新建SAS数据集用Viewtable打开一个空白表:在命令栏输入:vt在相应的逻辑库点击鼠标右键,选新建,再选表设定变量属性:在相应的列右击鼠标,输入变量名、标签、长度、输入输出格式等内容;输入数据:在相应的单元格中输入相应的内容。SAS导入和导出数据Import/Export 工具使你能够:导入 指的是从外部数据源读入数据,并把它
23、保存为SAS数据集;导出 指的是把一个SAS数据集保存为一个外部文件。外部数据源包括有: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按钮,得下图: 导出数据流程导出数据流程 命名、定位导出程序 在窗口键入程序名及其保存位置,单击FINISH按钮完成。语法: PROC EXPORT DATA= sashelp.class OUTFILE= “C:contact.xls” DBMS=EXCEL2000 REPLACE; RUN;注释:.DATA= sashelp.class:定义源数据集.OUTFILE= “C:contact.xls”:定义目标数据文件.DBMS=EXCE
25、L2000:定义目标数据类型,.REPLACE:“替换”选项,表明目标数据集以替换方式更新。 导入数据流程导入数据流程 导入数据流程导入数据流程 开始:单击【File】菜单中的【Import Data】: 导入数据流程导入数据流程 选择源数据集,单击NEXT按钮,得到下图: 导入数据流程导入数据流程 选择目标数据集(SAS数据集),单击NEXT按钮,得下图: 导入数据流程导入数据流程 命名、定位目标数据集 从Library下拉列表中选择数据库名,从Member下拉列表中选择(或输入)数据集名,单击Finish完成,或Next按钮,得到下图: 导入数据流程导入数据流程 命名、定位导出程序 在窗口
26、键入程序名及其保存位置,单击FINISH按钮完成。语法: PROC IMPORT OUT= WORK.contact DATAFILE= c:contact.xls DBMS=EXCEL2000 REPLACE; GETNAMES=YES; RUN;注释:.OUT= WORK.contact:定义目标数据集.DATAFILE= “c:contact.xls”:定义源数据集.DBMS=EXCEL2000:定义源数据类型.REPLACE:“替换”选项.GETNAMES=YES:“字段命名“选项,表明沿用源数据集中的第1行为字段名。SAS编程基础SAS编程基本概念lSAS 程序由两种程序步组成,如图
27、所示:SAS编程基本概念l数据步(Data Step):l以Data语句开始,用于创建和处理SAS数据集;Data步的主要功能有:创建一个新的数据集整理已有的数据集其一般形式为: DATA sas-data-set(option-1option-1= =value-1value-1. . . ); Set 语句 ; 其他sas语句; Run;SAS编程基本概念l过程步(Proc Step):l以Proc语句开始,用于分析处理SAS数据集中的数据;lPROC步常用来建立、管理和查询数据集,可方便的插入数据、抽取数据和更新数据。SAS编程基本概念l一个简单例子: Data simple;/*sim
28、ple.sas*/ Set sashelp.class; run; Proc print data=simple; var name age height weight; where age=13; run;SAS编程基本概念SAS的每个程序步都由数个语句构成。每个语句常以开始的关键词称呼,用分号表示语句的结束。(如data a;, proc print;, label a=“A”;)SAS语句书写的格式较为任意语句可以在任一列开始和结束;词间可任意加入空格和换行;一个语句可跨多行,多个语句可写在一行;良好的书写格式便于程序的阅读SAS编程基本概念SAS数据集存放在SAS逻辑库中,在读入数据前
29、,要先建立SAS逻辑库。用编程建立SAS逻辑库:一个物理位置指定一个逻辑库:libname 库标记 引擎 数据源 选项;如:libname basesasc:tmpbase sas;多个物理位置指定同一个逻辑库名:libname 库标记 引擎 (物理位置1 物理位置2 );其中物理位置可以是一个用引号括起来的实际物理地址,也可以是一个已经设定的逻辑库名。libname all (basesasd:sasdemodata);SAS编程基本概念可以用以下过程查看逻辑库的内容和属性: Proc datasets lib=逻辑库名(sashelp); run;可以用以下过程查看数据集的属性: Proc
30、 contents data=数据集名(sashelp.class); run;可以用以下过程查看数据集的内容: Proc print data=数据集名(sashelp.class); run;SAS数据加工赋值语句在数据步中使用赋值语句增加数据集中的变量:赋值语句的一般形式: Variable=表达式; 表达式中可以包含SAS操作符和函数.SAS操作符用来执行基本的计算;SAS函数的一般形式: 函数名(参数1,参数2,); (参数之间以逗号隔开,可以是常量、变量、表达式或其它 函数)赋值语句常用的操作符:SAS函数使用函数可以:进行一些数学计算(例如平方根);计算统计量(例如平均值或者总和
31、);处理SAS数据(例如计算某一天是星期几)字符运算函数:UPCASE(var)/LOWCASE(var):将字母全部转换为大写/小写;COMPRESS(var): 将字符串中的多个空格压为一个;SUBSTR(var,m,n):能根据起始位置和所需长度从字符串中抽取部分字符字符运算函数字符运算函数:TRIM(var)/LEFT(var):截去字符串头部/尾部的空格;INDEX():在字符串中查找一个字符;SCAN(var,n, ):根据分隔符,找出字符串中第n个单词;数值截取函数以下是几个常用的数值截取函数:INT(自变量):返回自变量的整数部分;ROUND(自变量,精度):返回按指定的精度对
32、自变量进行四舍五入的结果;CEIL(自变量):返回不小于自变量的最小整数部分。以下是使用这些函数的简单例子: Data test;/*test1.sas*/ x=326.54; integer=int(x); over=ceil(x); tenth=round(x,0.1); run; proc print data=test; run;与日期有关的函数函数TODAY、TIME和DATE(都不写自变量):函数 返回值 典型用法TODAY() 当前系统的日期值 now=today();TIME() 当前系统的时间值 current=time();DATE() 当前系统的日期值 time=date
33、();年月日的提取(自变量都是表示SAS日期值的数值):函数 返回值 例DAY(自变量) 自变量的月内日期值(1-31) day(02dec66d)=2WEEKDAY(自变量)自变量的周内参数(1-7) weekday(02dec66d)=6MONTH(自变量) 自变量的月份值(1-12) month(02dec66d)=12QTR(自变量) 自变量的季度值(1-4) qtr(02dec66d)=4YEAR(自变量) 自变量的年份值 year(02dec66d)=1966WEEKDAY(自变量)的值为1,表示的周日,周一为2,依此类推。此外还有日期值的整合函数MDY,日期时间运算函数INTNX
34、和INTCK等等数值与字符的转换字符自动转换为数值,一般地,系统对以下情况进行字符到数值的自动转换:将字符变量赋值给一个已规定为数值型的变量, 如:rate=payrate;在算术运算中使用字符型变量, 如:salary=payrate*hours;在比较运算中与数值变量进行比较, 如:if payrate=rate, 但在WHERE语句中和数据集选项WHERE的表达式中不进行自动转换;在一个需要数值型变量的函数中引用字符型变量, 如:newrate=sum(payrate,raise);数值与字符的转换函数函数INPUT实现将自变量的值由字符转换为数值,它的一般形式为: INPUT(源数据,
35、输入格式)其中:源数据:可以是一个字符型变量、字符常数值或要转为数值的表达式;输入格式:指明对源数据进行转换的输入格式;函数的返回值是源数据按输入格式转换的结果;INPUT函数也可用于字符到字符的转换;数值与字符的转换函数自动数值到字符的转换类似于字符到数值的转换,一般在以下的情况下发生:将数值型变量的值赋值给一个已规定为字符型的变量;在字符运算中使用数值型变量;在一个需要字符型自变量的函数中引用数值型变量。函数PUT完成数值到字符的转换,它的一般形式为: PUT(源数据,输出格式) 其中:源数据:可以是要转换为字符值的变量、常数或表达式;输入格式:指明对源数据转换的输出格式;PUT函数总是返
36、回一个字符串,它是源数据按输出格式输出的结果;设定变量属性的语句常用的DATA步中设定变量属性的语句:LENGTH 变量名 长度; 设定变量的长度和在数据集中的顺序;INFORMAT 变量名 输入格式; 设定变量的输入格式;FORMAT 变量名 输出格式; 设定变量的输出格式;LABEL 变量名=字符串输入格式; 设定变量的标签;条件转移语句条件转移语句条件转移语句几个比较操作符用法的例子: if dest=LON if dest in (LON,PAR) if flight=219 if boarded lt 150 if mailfreight if dest contains lon 数
37、据集的选项在数据步和过程步读取或写入数据集时可以加入选项来控制读写的过程,常用的有以下几个方面:更改数据集中的变量名;选择数据集中的变量;选择数据集中的观测;提供数据集的密码等.数据集的选项加在数据集名后,用一对圆括号限定,一般形式为:(选项1值1 选项2值2)如:重命名数据集中的变量: Data test(rename=(name=lastname);数据集的选项一个例子:data class(keep=name sex height hwratio); /*在新数据集中保留所列变量*/ set sashelp.class(drop=age); /*在读入时没读进AGE*/hwratio=h
38、eight/weight; /*赋值语句,创建新的变量*/run;proc print data=class;run;/*option1.sas*/数据集观测的选择Where语句:可在数据步和大多数的程序步中使用,用于选择观测进入数据集,它的一般形式为:Where 条件表示式If语句:可在数据步和大多数的程序步中使用,用于选择观测进入数据集,它的一般形式为:If 条件表示式用Delete语句可以选择那些数据不被写入到数据集 用法:if 条件表示式 then delete;按变量值对数据集排序使用SORT过程对数据集进行排序,一般形式为:PROC SORT DATA=数据集 ; BY 变量名列
39、变量名列;RUN;其中:若不使用OUT=输出数据集名,排序后的结果将覆盖原来的数据集;可按多个变量进行排序;可以按升序或降序进行排序;缺失值将被视为最小的值;不产生打印输出结果。按变量值对数据集排序如对数据集sashelp.class按AGE的降序进行排列,且AGE相同的记录按HEIGHT的值降序排列,可用以下程序:proc sort data=sashelp.class out=sorted; /*sort1.sas*/by descending age descending height;run;proc print out=sorted;run;面向多个数据集的数据加工数据集的拼接与合并
40、使用数据步(Data Step)对多数据进行操作通常有两种方式:拼接:在数据集的拼接中,增加了数据集的记录数;合并:在数据集的合并中,增加了数据集的字段数;数据集的拼接用SET语句拼接SAS数据集:DATA 新数据集;SET 输入数据集1 输入数据集2 ;RUN;/*如果不使用DROP=和KEEP=选项,在新的数据集中将包含所有旧数据集的变量*/数据集的合并用MERGE语句合并SAS数据集:DATA 新数据集;MERGE 输入数据集1 输入数据集2 ;BY 变量;RUN;使用MERGE语句可以合并任意多个数据集;MERGE输入数据集必须预先按该BY变量排序;一对一匹配的对接一对多匹配的对接不匹
41、配的对接用SQL过程查询和加工数据 SAS系统使用PROC SQL实现对SQL的支持。使用SQL过程可以:读入、展示和加工SAS数据文件;在表中增加和修改数据值;增加、修改和删除表的列;合并数据表;创建新的数据表;生成报表。用SQL过程查询和加工数据 使用SQL的SELECT语句显示数据表sashelp.class中的变量NAME、AGE和HEIGHT,并选出性别是男的学生。proc sql;/*sql1.sas*/title City and Years of Service;select name,age,height from sashelp.classwhere sex=M;quit;
42、select后的是变量名,from后的是数据集名。用SQL过程查询和加工数据 使用SQL的GROUP BY语句生成新的数据集,要求根据不同日期汇总原料量,新数据集中按日期排序.proc sql;/*sql1.sas*/create table tmp1 asselect date_pro,sum(weightfx) as weightfrom base.lz_tmp1group by date_proorder by date_pro;quit;数据汇总与报表制作数据汇总与报表制作数据汇总与报表制作利用SAS提供的各种过程可以制作各种风格的报表,这些过程都是面向SAS数据集的,所以要使用这些过
43、程制作报表,我们必须要先利用前面的知识将报表中所需要的信息整合到一个数据集中,从表现数据集的内容来看,报表可分为两类:显示详细数据的报表: 将数据集中每条记录的内容直接显示,最常使用的是PRINT过程实现;显示汇总数据的报表: 将数据集中的数据按指定的方式分类汇总,计算各项统计指标,汇总报表可以更集中地反映数据中某一方面的总貌,常使用TABULATE过程制作。PrintPrint过程过程用Proc print产生列表报表,有以下形式: PROC print DATA=数据集名 选项; VAR 变量序列; /*控制出现的变量和顺序*/ WHERE 条件表达式; /*控制出现的观测*/ SUM 变
44、量序列; /*计算变量的总和*/ BY 变量序列; /*进行分组和求小计,但要先对 数据集进行排序*/ RUN;PrintPrint过程过程l一个应用实例: proc print data=sashelp.class; /*print1.sas*/ var name age sex height weight; where age gt 13; sum age; run;l如果要根据性别对数据进行分组并求每一组的小计,怎样修改?l先对数据集根据sex字段排序;l在PRINT过程中加入BY语句。改进列表报表改进列表报表 l改进列表报表的相关语句:lTITLEn 文本; (加入标题)lFOOTNO
45、TEn 文本; (加入脚注)注意:1. 如果没有定义标题,缺省的标题是The SAS System;2. n的取值范围从1到10;3. 使用了这两个语句后,所定义的标题和脚注将一直有 4. 效,直到另一个TITLE和FOOTNOTE语句被执行;4. 用TITLE1;和FOOTNOTE1;语句可以取消所有已定义过 的标题和脚注。改进列表报表改进列表报表 lLABEL语句: LABEL 变量1label1 变量2label2 变量n=labeln; LABEL语句实际上为它定义的每个变量产生一个标签,标签中可以输入中文,用于PRINT过程时,要在PRINT语句中加入LABEL选项。 FORMAT语
46、句,控制数据值的输出格式: format 变量名 输出格式名;改进列表报表改进列表报表 l一个实例:proc print data=basedata.lz_simple1(obs=20) label; /*print2.sas*/var date_pro COIL_NUM material THICK_FX WIDTH_FX WEIGHTFX;title 冷轧数据集市;title2 主题号SU5501;footnote 时间:2003-06-22;footnote2 地点:教陪中心;label thick_fx=厚度 width_fx=宽度 WEIGHTFX=重量;format date_pr
47、o yymmdd10.;run;FORMAT过程过程 l使用Proc format自定义输入格式和输出格式:lPROC FORMAT; VALUE 格式名 取值范围1指标记1 取值范围2指标记2 ; RUN;l使用PROC FORMAT定义的格式,可以在PRINT过程中用FORMAT语句引用它们。FORMAT过程过程 l在VALUE语句中,格式可以被赋予:单个数字; 例如: proc format; value sexfmt 1=女 2=男 other=缺失值; run;l在这里定义了格式sexfmt,如果某个变量被赋予这种格式时,变量中的值为1的都将被标记为女,值为2的将被标记为男,值既不为
48、1又不为2的将被标记为缺失值。FORMAT过程过程 l在VALUE语句中,格式可以被赋予:某一数值范围; 例如: proc format; value heifmt low-60=低于平均 60-65=平均 65-high=高于平均; run;l在这里定义了格式heifmt,如果某个变量被赋予这种格式时,变量中的值在最小值与60之间的都将被标记为低于平均,在60到65之间的被标记为平均,在65到最大值之间的将被标记为高于平均。FORMAT过程过程 l在VALUE语句中,格式可以被赋予:字符、字符串或某一范围的字符; 例如: proc format; value $sexfmt F=女 M=男
49、other=缺失; run;l字符型格式只能被用于字符型变量。FORMAT过程过程 l一个实例:proc print data=sashelp.class label; /*format.sas*/format sex $sexfmt;run;注意字符型格式的调用方式。TABULATE过程过程 使用PROC TABULATE产生汇总报表: 当一个SAS数据集包含不太多的数据时 列表报表可以很好的描述数据;大量信息时 需要用汇总报表描述。 汇总报表产生的步骤:将数据根据需要进行分类;在分类的基础上计算一些统计量; 如:频数、总和、均值、百分比等等。TABULATE过程过程 在产生汇总报表前,首先
50、必须在SAS数据集中定义分类变量和分析变量:分类变量(Class Variables)具有以下特性:可以是数值型变量或字符型变量;如果是数值型变量,则代表某些离散的类;可以将数据分类,以便在每个类上进行计算和分析。分析变量(Analysis Variables)具有以下特性:多数是数值型变量;适合于作各种统计计算。 例如:计数、求和、平均、百分比等等。TABULATE过程过程 PROC TABULATE可以计算的统计量有:频数(frequency);均值(mean);标准差(standard deviation);最小值(minimum);最大值(maximum);极差(range);总和(s
51、um);百分数(percentages);TABULATE过程过程 最简单的TABULATE过程必须定义下列要素:分类变量;或分析变量;表格的结构和格式。PROC TABULATE DATA=数据集 选项;CLASS 分类变量序列;/*用空格隔开*/VAR 分析变量序列;TABLE 页表达式,行表达式,列表达式/选项;RUN;TABULATE的一般形式:PROC TABULATE DATA=SAS-data-set options;CLASS class-variables;VAR analysis-variables;TABLE row-expression,column-expressio
52、n /options;RUN;CLASS语句用于定义分类变量VAR语句用于定义分析变量TABLE语句用于定义表格的结构和格式,较为常用的汇总表格一般为两维,第一维为行,第二维为列。TABLE语句中变化较多,将决定最终表格的形式。TABULATE的一般形式:TABLE语句由元素和操作符构成,元素是指变量和统计量,操作符控制表格的形式,如下表:操作符操作符作用作用逗号 ,转另一维空格两个变量并排星号 *交叉组合TABULATE过程应用例子:Proc tabulate data=sashelp.class; class name; table name;Run; /*tabulate.sas*/由于
53、没有定义分析变量,则默认的统计量为N(频数),即某一类的有效观测数;没有操作符的TABLE语句使变量的每一个值占据表格的一个单独列。TABULATE过程应用例子:Proc tabulate data=sashelp.class; class name sex; table name,sex;Run; /*tabulate2.sas*/使用逗号操作符隔开两个表达式将产生一个二维报表,第一个表达式定义行,第二个表达式定义列。TABULATE过程应用例子:Proc tabulate data=sashelp.class; class name sex age; table name,sex,age;
54、Run; /*tabulate3.sas*/使用两个逗号操作符隔开三个表达式将产生一个三维报表,第一个表达式定义页,第二个表达式定义行,第三个表达式定义列。TABULATE过程应用例子:Proc tabulate data=sashelp.class; class name sex; table name sex;Run; /*tabulate4.sas*/使用空格操作符隔开两个元素将产生一个连排报表。TABULATE过程应用例子:Proc tabulate data=sashelp.class; class name sex; table name*sex;Run; /*tabulate5.
55、sas*/使用星号操作符隔开两个元素将产生一个交叉等级报表。TABULATE过程在PROC TABULATE制作报表的过程中,还可以使用以下的手段来增加报表的可读性:使用FORMAT,LABEL,TITLE以及FOOTNOTE语句;使用KEYLABEL语句为所有统计量加入标签语句:KEYLABEL keywordlabel;制作图形展现数据SAS图形入门SAS/GRAPH提供了许多过程,可以制作:散点图及连线图(plots)显示详细数据图标(charts)显示概括数据地图(maps)三维图形(three-dimensional graphics)文本缩放及其他(text slides)1.散点
56、图、折线图散点图、折线图1.1图例1.2语法1.3举例1.1图例(散点图)1.1图例(折线图)1.2语法 PROC GPLOT data=t;PLOT output*month/vaxis=0 to 200 by 10;SYMBOL i=join;RUN;注释:变元t:源数据集变元output:纵坐标字段,表明output是纵坐标字段。变元month:横坐标字段,表明month是横坐标字段。注释:变元vaxis=:坐标轴选项,此处表明纵坐标刻度从0到200,间距为10。Haxis:定义水平轴刻度Vaxis:定义垂直轴刻度Caxie:定义坐标轴颜色Ctest:定义坐标轴文本的颜色 变元i=:图形
57、选项,此处表明以折线连接相临点以形成折线图。V: Value定义数据点符号。I: Interpolation定义数据点间的连线方式W: Width定义连线宽度 C: Color定义颜色 1.2语法 (续)1.3举例举例1、(散点图):已知数据集t有钢卷分月产量信息,如下表,请绘制散点图。月份123456789产量708090120130160150175180 程序1: datadata t;input month output;cards;1 702 803 904 1205 1306 1607 1508 1759 180;runrun;PROCPROC GPLOTGPLOT data=t;
58、PLOT output*month/vaxis=0 0 to 200200 by 1010;RUNRUN;举例2、(折线图):程序2:PROCPROC GPLOTGPLOT data=t;PLOT output*month/vaxis=0 0 to 200200 by 1010;SYMBOL i=link;RUN;2.2.柱状图、圆饼图柱状图、圆饼图2.1图例2.2语法2.3举例2.1图例(柱状图 )2.1图例(圆饼图 )2.2语法PROCPROC GCHARTGCHART data=t;vbar month/sumvar=output type=sum file=x;Run;Run; 注释:
59、u变元t:源数据集 u变元vbar:图表类型关键字,用于定义图表形式,此处是平面柱状图。BLOCK:积木图HBAR:平面水平柱状图HBAR3D:立体水平柱状图VBAR:平面垂直柱状图VBAR3D:立体垂直柱状图PIE:平面圆饼图PIE3D:立体圆饼图DONUT:平面圆环图STAR:平面星环图 2.2语法(续)注释:注释:u变元month:自变量(又称分类变量)。u变元sumvar=:指定用于统计计算的变量名。u变元type=:指定要计算的统计量,包括:uFREQ:频数uMean:平均值uSum:累计值u变元file=:定义图形填充模式。 ux: cross交叉线us: solid全部填满un:
60、 none空2.3举例举例3(柱状图):已知数据集t有钢卷各月产量信息,如下表,请绘制柱状图。 月份123456789产量70 80 90 120130160150175180程序3:PROCPROC GCHARTGCHART data=t;vbar month/sumvar=output type=sum;RunRun; 举例4(圆饼图):程序4:PROCPROC GCHARTGCHART data=t;pie month/sumvar=output type=sum;RunRun;SAS 宏入门SAS系统提供了强大的宏语言功能,使用宏语言可以: 获取SAS的系统信息; 有条件的执行SAS数
61、据步和过程步; 产生与数据无关的程序代码; 在不同的SAS数据步或过程步之间传递数据; 重复执行SAS程序代码,提高复用性;SAS 宏入门宏语言中允许使用宏变量;SAS宏变量有两种: 1、系统创建的自动宏变量; /*可以在SAS环境下使用”%put _all_;”语句查看所有自动宏变量*/ 2、开发人员自定义的宏变量;SAS 宏入门在引用宏变量时遵循以下规则: 1、引用SAS宏变量时,在变量名前加上符号”&”; 例如:&day &name; 2、宏变量被引用的效果就是用宏变量的内容直接替代宏变量名; 3、如果宏变量被引用在一对引号之间,则必须使用双引号,而不能使用单引号;SAS 宏入门使用%L
62、ET语句定义宏变量: 例如:%LET macro_name=value; 在这里: 1、创建了一个名字为macao_name的宏变量; 2、将值value赋予此宏变量; 3、不需要加入引号,一旦加入,则引号会被作为宏变量的一部分; SAS 宏入门定义自己的宏: %MACRO name(value1,value2,);/*开始定义宏*/ macro-text;/*宏的实体,通常是SAS程序*/ %MEND name;/*结束宏*/调用宏的形式为: %name(值1,值2,);SAS 宏入门实例应用:%MACRO output(proc,dsn);proc &proc data=&dsn;run; %MEND output; %output(print,pany);%output(contents,sashelp.air);SAS OnlineDoc的使用SAS OnlineDoc中包含有SAS各个模块的相关内容,可 通过相关模块,快速查找帮助;在Base SAS Software中,包含有SAS语句、函数、输 入格式、输出格式、选项、宏语言和过程的详细内 容,可充分满足你的需要。帮助网站:http :/http :/http:/ 感谢各位的批评指导! 谢谢 谢!谢!让我们共同进步1542021/3/9