




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录,SAS系统简介和基础操作 SAS系统的工作环境; SAS系统对数据文件的管理; 用编程读入数据建立SAS数据集; 数据加工; 数据汇总与报表制作; 制作图形展现数据 SAS宏入门,SAS系统概述和基础操作,SAS 系统,SAS系统是用于建立数据仓库并进行数据分析与决策支持的大型集成式模块化软件系统。 (其早期的名称为 Statistical Analysis System) 被誉为数据处理和统计分析领域的国际标准软件,SAS 系统软件构成,SAS系统是一个可由几个到二、三十个专用模块及面向行业的子系统组成的大型集成式软件包,其模块按功能大体上分为四类: 数据库部分: Base SAS,
2、FSP,ACCESS,. 分析核心: QC,INSIGHT,STAT,ETS,. 开发呈现工具: AF,EIS,GRAPH,. 分布处理与数据仓库: CONNECT,WA,.,SAS 系统介绍,SAS系统是一个模块化、集成化的应用软件系统,使用SAS系统可以实现对数据的完全控制和充分利用。SAS系统主要完成以数据为中心的四大任务: 数据访问. 数据管理. 数据呈现. 数据分析. (所有的工作在一个平台内完成),信息交付,SAS的核心任务(从数据到信息) 数据采集 管理 组织 利用 信息知识输出,SAS 系统的组件,SAS系统的核心: Base SAS模块,用于管理并呈现数据,包含有一套编程语言
3、以及一系列过程,是其它模块的基础: SAS数据的存储: 关系型数据存储:data set,data view;完全支持SQL标准的数据结 构和数据处理. 多维数据存储:MDDB/Cube;没有结构性冗余的有效存储. 数据挖掘库:DMDB;针对数据挖掘特点的数据存储. 并行处理数据引擎:智能数据切分功能,优化的索引结构.,SAS 系统的组件,数据访问: 通过SAS/ACCESS模块,可读取各种数据源,包括: Informix,UDB,Sybase,Oracle,SQL Server; cobol; 对ODBC,OLE DB支持的数据源; Windows下的文件:.DBF,.Excel; 文本格式
4、的文件; html格式的文件. ,SAS 系统的组件,数据统计分析: SAS/STAT 覆盖了当今世界上所有的实用数理统计分析方法,可 以适应各种不同模型和不同特点数据的需要; SAS/ETS 提供了丰富的计量经济学和时间序列分析方法; SAS/INSIGHT 一个功能强大的可视化的数据探索与分析的工具; SAS/OR 用于进行运筹运算; SAS/QC 功能强大的质量控制软件。,SAS 系统的组件,SAS数据仓库-SAS/WA: SAS的数据仓库技术集成地实现了数据访问和数据管理的任务,不仅能访问存在于不同地点地任何形式地数据,而且将之进行分类、合并、归纳、整理及深层分析后得到有用的信息,这些
5、支持决策地信息具有开放性,能被其它应用系统访问。 SAS/WA:是非常优秀地可视化数据仓库管理工具,涉及数据仓库建立 工程中地各个环节。 OLAP系列: SAS/MDDB,Open OLAP Server, SAS/EIS,SAS 系统的组件,表现工具: 前端开发工具:SAS/AF 图形表现工具:SAS/GRAPH,可制作出各种二维和三维图形,如柱 状图,散点图,饼图等等; 地理信息表现工具:SAS/GIS Web产品: SAS/Intrnet: SAS/StoredProcess SAS/WebEIS: SAS/Portal SAS/Web Report Studio SAS/WebAF,S
6、AS系统的基本运行环境,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窗口中输入程序: proc print data=sasuser.class;/*simple1.sas*/
8、 var name sex age; where age gt 13; run; 2、通过菜单、命令框、工具栏或功能键等都可提交程序; 3、在Log中查看程序的运行信息,在Output窗口中查看运行结果。 4、若需要重新找回程序,可通过功能键或菜单进行。,显示管理系统,其它一些窗口: KEYS窗口:查看及改变功能键的设置; OPTIONS窗口: 查看及改变SAS的系统设置; LIBNAME窗口: 查看已存在的SAS数据库; DIR窗口:查看某个SAS数据库的内容; VAR窗口:查看SAS数据集的有关信息;,显示管理系统,每个窗口都有自己相应的菜单选项; 可通过点击窗口条或在查看菜单打开不同的窗
9、口; 在工具菜单可以调用一些实用的工具以及定制系统的属性; 如:可以通过选择菜单进行: 表编辑、报表编辑、图形编辑以及文本编辑等等; 在选项子菜单下可以查看及定制系统的一些属性; 如:在参数菜单中可以把过程的输出定制为HTML文件, 保存在某个目录中,默认为临时库的目录。 在解决方案菜单中包含了部分SAS模块的菜单操作环境;,SAS系统对数据文件的管理,SAS文件类型,有多种不同的SAS文件类型,其中包括有: SAS data set/view(SAS数据集/视图) SAS对数据的分析与呈现都是面对SAS数据集进行的,得到它们主要有三个途径: 1)直接在SAS系统中输入数据; 2)用SAS数据
10、步(Data 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-f
12、ilename (库标记.文件名) 库标记指的是逻辑库的名字(最长8个字符,以字母或下划线开始,可包含字母、数字和下划线)。,SAS数据库,SAS逻辑库分为永久库和临时库: 永久库:SASUSER、SASHELP、自定义的库; 临时库:WORK (关闭会话,内容将丢失)。 自定义的库若不指定,关闭SAS后,库标记将失效,但内容被保存下来。 每次启动,SAS都自动产生两个SAS逻辑库: WORK(引用WORK库中的文件可省略库标记) SASUSER,SAS数据库的设定,不同的主操作系统下逻辑库以不同的方式与主操作系统下的文件组织相联系; 在Windows下每个SAS逻辑库与某个子目录相连系,即S
13、AS逻辑库包含指定子目录内的所有SAS文件 (不含更下一级子目录内容); 例:SASUSER: C:documents and settings.V8 BASE DATA:C:base data,SAS数据库的设定,设定一个SAS逻辑库就是与操作系统的某个物理位置建立一个联系,让SAS系统可以对该位置上的SAS文件进行管理; 解除一个SAS逻辑库只是解除上述联系,并不删除该物理位置上的SAS文件。 多个SAS逻辑库可与同一个物理位置相连接 一个SAS逻辑库也可与多个物理位置相连接,SAS数据库的设定,标记一个SAS逻辑库有两种方法: 通过菜单进行; libname 库标记 引擎 数据源 选项;
14、 engine(引擎)是一种访问架构, SAS的逻辑库都有一个引擎,这个引擎决定了SAS可以访问和写入的SAS文件格式。 它可以是V9,V8等不同的SAS版本,也可以是Oracle ,DB2等表示外部数据格式文件,还有SPSS,DMBP等为一些其它软件格式文件使用的数据。不同引擎的库连接可构成混合引擎的库,实现同时看到库内不同引擎的文件。,SAS数据库的设定,SAS9可以读出V8的SAS文件,可以修改和写入V8的Data Set和catalog; V8数据集转为SAS9:Proc Migration,Proc Copy,Proc datasets的copy语句; V8 Catalog转为SAS
15、9:Proc Migration。,SAS数据库用菜单设定,1.按工具条上图标(新建逻辑库)可进入设定新的逻辑库的新 建逻辑库窗口; 2.浏览器窗口击活时,在下拉菜单中选: 文件 = 新建 = 逻辑库 可进入设定SAS逻辑库的窗口。 3.在SAS环境处右击鼠标,在弹出的菜单中选新建.,也可进入新建逻辑库窗口。 注意启动时使用选项的使用。,利用SAS/CONNECT建立连接,利用SAS/CONNECT建立连接,SAS/CONNECT软件提供了SAS应用的协同环境,提供了运行在不同平台上的SAS之间的通讯连接。 利用SAS/CONNECT,一个在本地运行的SAS程序可以与一个或多个远端SAS进程建
16、立连接,在建立连接的基础上,还可以通过本地SAS访问到远端的数据,也可以递交程序给远端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建立库标记,访问远端
17、数据. libname 库标记名 “文件所在路径” server=ser_name;,利用窗口菜单操作和创建SAS数据集,SAS数据集的变量,SAS数据集的列称为变量(Variable),变量的类型: 字符型变量(Character Variable): 可包含任何值,包括字母、数字和特殊字符,长度为1 至32,767个字节; 数值型变量(Numerical Variable): 通常只包含数字,包括科学计数法和十六进制表示法 中的数字,保存为8个字节的浮点数;,SAS数据集的缺失值处理,许多数据集中都会有缺失值,SAS对此作以下处理: 对于数值型变量,这个值显示为一个点.; 对于字符型变量,
18、这个值显示为空格。 例子: data tmp; length var1 $8.; length var2 $8.; length var3 8.; length var4 8.; var2=abc; var4=123; run;,输入格式和输出格式,SAS数据集数据的格式: 输入格式(Informat): 指示SAS系统如何读入数据。 输出格式(Format): 指示SAS系统如何输出数据。 使得数据表或报表中看到的数据的值并不一定就是数据的实际存储值; 使得SAS系统不同于其他的分析系统,只具有两种类型的变量就能进行广泛的数据处理和分析。,输入格式和输出格式,它们的一般形式如下: infor
19、mat-name. format-name. $ 代表变量是字符型 Informat-name 输入格式名 Format-name 输出格式名 W 输入或输出的总宽度(包括$和,) . 必须的分隔符 d 小数部分的长度,默认为0 注意:所有输入输出格式必须包含一个点.作为名字的一部分,输入格式和输出格式,SAS系统提供的几种常用输入输出格式: w.d 标准的数字型格式 $w. 标准的字符型格式 commaw.d 数字中加入逗号 dollarw.d 数字中加入逗号,数字前加入$ datew. 日期格式 bestw. SAS选择最佳表示法 此外,用户还可以自定义格式。,输入格式和输出格式,根据输入
20、格式来读入数据,不同的格式读入为不同的存储数值:,输入格式和输出格式,根据需要使用输出格式,使存储数值输出为所需要的数值,但并没有改变实际的存储值:,SAS对日期时间值的处理,SAS日期值、日期时间值在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 将
21、一个日期时间表示为一个常数: 将日期或时间加上引号,后面加上d,如01JAN86d,SAS对日期时间值的处理,SAS通过输入格式和输出格式将日期值与其他较易阅读的日期形式联系起来: 如1992年10月16日可表示为: MMDDYYw. 101692(MMDDYY6.)或者 10/16/92(MMDDYY8.) DDMMYYw. 161092(DDMMYY6.)或者 16/10/92(DDMMYY8.) DATEw. 16OCT92(DATE7.) 或者 16OCT1992(DATE9.),使用Viewtable浏览SAS数据集,Viewtable提供一个显示数据集的窗口,它具有对数据集的浏览、
22、编辑和创建的功能: 如何进入Viewtable窗口: (1)在SAS逻辑库对话框中双击数据集图标 (2)在命令栏键入命令: VT 数据集名 例如: VT SASHELP.CLASS,使用Viewtable浏览SAS数据集,通过Viewtable窗口打开的数据集有两种模式: 浏览模式:只能浏览,不能进行修改;(默认模式) 编辑模式:改为该模式后,可对数据进行一系列操作,包括: 设置条件取子集; 改变表和变量的属性; 排序、另存为其它格式文件; 根据数据作图、作报表等等.,使用Viewtable新建SAS数据集,用Viewtable打开一个空白表: 在命令栏输入:vt 在相应的逻辑库点击鼠标右键,
23、选新建,再选表 设定变量属性: 在相应的列右击鼠标,输入变量名、标签、长度、输入输出格式等内容; 输入数据: 在相应的单元格中输入相应的内容。,SAS导入和导出数据,Import/Export 工具使你能够: 导入 指的是从外部数据源读入数据,并把它保存为SAS数据集; 导出 指的是把一个SAS数据集保存为一个外部文件。 外部数据源包括有: Microsoft Excel 4, 5, 7, 97 or 2000 电子表格; Microsoft Access 97 or 2000 表 dBASE Lotus 1, 3, or 4 电子表格 delimited files 分隔文件,导出数据流程,
24、导出数据流程,开始:单击【File】菜单中的【Export Data】:,导出数据流程,选择源数据集 从LIBRARY下拉列表中选择数据库,从MEMBER下拉列表中选择数据集, 单击NEXT按钮,得到下图:,导出数据流程,选择目标数据集类型,单击NEXT按钮,得下图:,导出数据流程,命名、定位目标数据集 在窗口键入保存位置,单击FINISH按钮完成,或单击NEXT按钮,得下图:,导出数据流程 命名、定位导出程序 在窗口键入程序名及其保存位置,单击FINISH按钮完成。 语法: PROC EXPORT DATA= sashelp.class OUTFILE= “C:contact.xls” DB
25、MS=EXCEL2000 REPLACE; RUN; 注释: .DATA= sashelp.class:定义源数据集 .OUTFILE= “C:contact.xls”:定义目标数据文件 .DBMS=EXCEL2000:定义目标数据类型, .REPLACE:“替换”选项,表明目标数据集以替换方式更新。,导入数据流程,导入数据流程,开始:单击【File】菜单中的【Import Data】:,导入数据流程,选择源数据集,单击NEXT按钮,得到下图:,导入数据流程,选择目标数据集(SAS数据集),单击NEXT按钮,得下图:,导入数据流程,命名、定位目标数据集 从Library下拉列表中选择数据库名,
26、从Member下拉列表中选择(或输入) 数据集名,单击Finish完成,或Next按钮,得到下图:,导入数据流程 命名、定位导出程序 在窗口键入程序名及其保存位置,单击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:“替换”选
27、项 .GETNAMES=YES:“字段命名“选项,表明沿用源数据集中的第1行为字段名。,SAS编程基础,SAS编程基本概念,SAS 程序由两种程序步组成,如图所示:,SAS编程基本概念,数据步(Data Step): 以Data语句开始,用于创建和处理SAS数据集; Data步的主要功能有: 创建一个新的数据集 整理已有的数据集 其一般形式为: DATA sas-data-set(option-1=value-1); Set 语句 ; 其他sas语句; Run;,SAS编程基本概念,过程步(Proc Step): 以Proc语句开始,用于分析处理SAS数据集中的数据; PROC步常用来建立、管
28、理和查询数据集,可方便的插入数据、抽取数据和更新数据。,SAS编程基本概念,一个简单例子: Data simple;/*simple.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语句书写的格式较为任意 语句可以在任一列开始和结束; 词间可任意加入空格
29、和换行; 一个语句可跨多行,多个语句可写在一行; 良好的书写格式便于程序的阅读,SAS编程基本概念,SAS数据集存放在SAS逻辑库中,在读入数据前,要先建立SAS逻辑库。 用编程建立SAS逻辑库: 一个物理位置指定一个逻辑库: libname 库标记 引擎 数据源 选项; 如:libname basesasc:tmpbase sas; 多个物理位置指定同一个逻辑库名: libname 库标记 引擎 (物理位置1 物理位置2 ); 其中物理位置可以是一个用引号括起来的实际物理地址,也可以是一个已经设定的逻辑库名。 libname all (basesasd:sasdemodata);,SAS编程
30、基本概念,可以用以下过程查看逻辑库的内容和属性: Proc datasets lib=逻辑库名(sashelp); run; 可以用以下过程查看数据集的属性: Proc contents data=数据集名(sashelp.class); run; 可以用以下过程查看数据集的内容: Proc print data=数据集名(sashelp.class); run;,SAS数据加工,赋值语句,在数据步中使用赋值语句增加数据集中的变量: 赋值语句的一般形式: Variable=表达式; 表达式中可以包含SAS操作符和函数. SAS操作符用来执行基本的计算; SAS函数的一般形式: 函数名(参数1,
31、参数2,); (参数之间以逗号隔开,可以是常量、变量、表达式或其它 函数),赋值语句,常用的操作符:,SAS函数,使用函数可以: 进行一些数学计算(例如平方根); 计算统计量(例如平均值或者总和); 处理SAS数据(例如计算某一天是星期几) 字符运算函数: UPCASE(var)/LOWCASE(var):将字母全部转换为大写/小写; COMPRESS(var): 将字符串中的多个空格压为一个; SUBSTR(var,m,n):能根据起始位置和所需长度从字符串中抽取部分字符,字符运算函数,字符运算函数: TRIM(var)/LEFT(var):截去字符串头部/尾部的空格; INDEX():在字
32、符串中查找一个字符; SCAN(var,n, ):根据分隔符,找出字符串中第n个单词; ,数值截取函数,以下是几个常用的数值截取函数: INT(自变量):返回自变量的整数部分; ROUND(自变量,精度):返回按指定的精度对自变量进行四舍五入的结果; 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;,与日期有关的函数,函数TODA
33、Y、TIME和DATE(都不写自变量): 函数 返回值 典型用法 TODAY() 当前系统的日期值 now=today(); TIME() 当前系统的时间值 current=time(); DATE() 当前系统的日期值 time=date(); 年月日的提取(自变量都是表示SAS日期值的数值): 函数 返回值 例 DAY(自变量) 自变量的月内日期值(1-31) day(02dec66d)=2 WEEKDAY(自变量)自变量的周内参数(1-7) weekday(02dec66d)=6 MONTH(自变量) 自变量的月份值(1-12) month(02dec66d)=12 QTR(自变量) 自
34、变量的季度值(1-4) qtr(02dec66d)=4 YEAR(自变量) 自变量的年份值 year(02dec66d)=1966 WEEKDAY(自变量)的值为1,表示的周日,周一为2,依此类推。 此外还有日期值的整合函数MDY,日期时间运算函数INTNX和INTCK等等,数值与字符的转换,字符自动转换为数值,一般地,系统对以下情况进行字符到数值的自动转换: 将字符变量赋值给一个已规定为数值型的变量, 如:rate=payrate; 在算术运算中使用字符型变量, 如:salary=payrate*hours; 在比较运算中与数值变量进行比较, 如:if payrate=rate, 但在WHE
35、RE语句中和数据集选项WHERE的表达式中不进行自动转换; 在一个需要数值型变量的函数中引用字符型变量, 如:newrate=sum(payrate,raise);,数值与字符的转换函数,函数INPUT实现将自变量的值由字符转换为数值,它的一般形式为: INPUT(源数据,输入格式) 其中: 源数据:可以是一个字符型变量、字符常数值或要转为数值的表达式; 输入格式:指明对源数据进行转换的输入格式; 函数的返回值是源数据按输入格式转换的结果; INPUT函数也可用于字符到字符的转换;,数值与字符的转换函数,自动数值到字符的转换类似于字符到数值的转换,一般在以下的情况下发生: 将数值型变量的值赋值
36、给一个已规定为字符型的变量; 在字符运算中使用数值型变量; 在一个需要字符型自变量的函数中引用数值型变量。 函数PUT完成数值到字符的转换,它的一般形式为: PUT(源数据,输出格式) 其中: 源数据:可以是要转换为字符值的变量、常数或表达式; 输入格式:指明对源数据转换的输出格式; PUT函数总是返回一个字符串,它是源数据按输出格式输出的结果;,设定变量属性的语句,常用的DATA步中设定变量属性的语句: LENGTH 变量名 长度; 设定变量的长度和在数据集中的顺序; INFORMAT 变量名 输入格式; 设定变量的输入格式; FORMAT 变量名 输出格式; 设定变量的输出格式; LABE
37、L 变量名=字符串输入格式; 设定变量的标签;,条件转移语句,条件转移语句,条件转移语句,几个比较操作符用法的例子: if dest=LON if dest in (LON,PAR) if flight=219 if boarded lt 150 if mailfreight if dest contains lon ,数据集的选项,在数据步和过程步读取或写入数据集时可以加入选项来控制读写的过程,常用的有以下几个方面: 更改数据集中的变量名; 选择数据集中的变量; 选择数据集中的观测; 提供数据集的密码等. 数据集的选项加在数据集名后,用一对圆括号限定,一般形式为:(选项1值1 选项2值2)
38、如:重命名数据集中的变量: Data test(rename=(name=lastname);,数据集的选项,一个例子: data class(keep=name sex height hwratio); /*在新数据集中保留所列变量*/ set sashelp.class(drop=age); /*在读入时没读进AGE*/ hwratio=height/weight; /*赋值语句,创建新的变量*/ run; proc print data=class;run;/*option1.sas*/,数据集观测的选择,Where语句:可在数据步和大多数的程序步中使用,用于选择观测进入数据集, 它的一
39、般形式为:Where 条件表示式 If语句:可在数据步和大多数的程序步中使用,用于选择观测进入数据集, 它的一般形式为:If 条件表示式 用Delete语句可以选择那些数据不被写入到数据集 用法:if 条件表示式 then delete;,按变量值对数据集排序,使用SORT过程对数据集进行排序,一般形式为: PROC SORT DATA=数据集 ; BY 变量名列 变量名列; RUN; 其中: 若不使用OUT=输出数据集名,排序后的结果将覆盖原来的数据集; 可按多个变量进行排序; 可以按升序或降序进行排序; 缺失值将被视为最小的值; 不产生打印输出结果。,按变量值对数据集排序,如对数据集sas
40、help.class按AGE的降序进行排列,且AGE相同的记录按HEIGHT的值降序排列,可用以下程序: proc sort data=sashelp.class out=sorted; /*sort1.sas*/ by descending age descending height; run; proc print out=sorted; run;,面向多个数据集的数据加工,数据集的拼接与合并,使用数据步(Data Step)对多数据进行操作通常有两种方式: 拼接:在数据集的拼接中,增加了数据集的记录数; 合并:在数据集的合并中,增加了数据集的字段数;,数据集的拼接,用SET语句拼接SAS
41、数据集: DATA 新数据集; SET 输入数据集1 输入数据集2 ; RUN; /*如果不使用DROP=和KEEP=选项,在新的数据集中将包含所有旧数据集的变量*/,数据集的合并,用MERGE语句合并SAS数据集: DATA 新数据集; MERGE 输入数据集1 输入数据集2 ; BY 变量; RUN; 使用MERGE语句可以合并任意多个数据集; MERGE输入数据集必须预先按该BY变量排序;,一对一匹配的对接,一对多匹配的对接,不匹配的对接,用SQL过程查询和加工数据,SAS系统使用PROC SQL实现对SQL的支持。 使用SQL过程可以: 读入、展示和加工SAS数据文件; 在表中增加和修
42、改数据值; 增加、修改和删除表的列; 合并数据表; 创建新的数据表; 生成报表。,用SQL过程查询和加工数据,使用SQL的SELECT语句显示数据表sashelp.class中的变量NAME、AGE和HEIGHT,并选出性别是男的学生。 proc sql;/*sql1.sas*/ title City and Years of Service; select name,age,height from sashelp.class where sex=M; quit; select后的是变量名,from后的是数据集名。,用SQL过程查询和加工数据,使用SQL的GROUP BY语句生成新的数据集,要
43、求根据不同日期汇总原料量,新数据集中按日期排序. proc sql;/*sql1.sas*/ create table tmp1 as select date_pro,sum(weightfx) as weight from base.lz_tmp1 group by date_pro order by date_pro; quit;,数据汇总与报表制作,数据汇总与报表制作,利用SAS提供的各种过程可以制作各种风格的报表,这些过程都是面向SAS数据集的,所以要使用这些过程制作报表,我们必须要先利用前面的知识将报表中所需要的信息整合到一个数据集中,从表现数据集的内容来看,报表可分为两类: 显示详
44、细数据的报表: 将数据集中每条记录的内容直接显示,最常使用的是PRINT过程实现; 显示汇总数据的报表: 将数据集中的数据按指定的方式分类汇总,计算各项统计指标,汇总报表可以更集中地反映数据中某一方面的总貌,常使用TABULATE过程制作。,Print过程,用Proc print产生列表报表,有以下形式: PROC print DATA=数据集名 选项; VAR 变量序列; /*控制出现的变量和顺序*/ WHERE 条件表达式; /*控制出现的观测*/ SUM 变量序列; /*计算变量的总和*/ BY 变量序列; /*进行分组和求小计,但要先对 数据集进行排序*/ RUN;,Print过程,一
45、个应用实例: proc print data=sashelp.class; /*print1.sas*/ var name age sex height weight; where age gt 13; sum age; run; 如果要根据性别对数据进行分组并求每一组的小计,怎样修改? 先对数据集根据sex字段排序; 在PRINT过程中加入BY语句。,改进列表报表,改进列表报表的相关语句: TITLEn 文本; (加入标题) FOOTNOTEn 文本; (加入脚注) 注意: 如果没有定义标题,缺省的标题是The SAS System; n的取值范围从1到10; 使用了这两个语句后,所定义的标
46、题和脚注将一直有 效,直到另一个TITLE和FOOTNOTE语句被执行; 用TITLE1;和FOOTNOTE1;语句可以取消所有已定义过 的标题和脚注。,改进列表报表,LABEL语句: LABEL 变量1label1 变量2label2 变量n=labeln; LABEL语句实际上为它定义的每个变量产生一个标签,标签中可以输入中文,用于PRINT过程时,要在PRINT语句中加入LABEL选项。 FORMAT语句,控制数据值的输出格式: format 变量名 输出格式名;,改进列表报表,一个实例: proc print data=basedata.lz_simple1(obs=20) label
47、; /*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_pro yymmdd10.; run;,FORMAT过程,使用Proc format自定义输入格式和输出格式: PROC FORMAT; VALUE 格式名 取值范围1指标记1 取值范围2
48、指标记2 ; RUN; 使用PROC FORMAT定义的格式,可以在PRINT过程中用FORMAT语句引用它们。,FORMAT过程,在VALUE语句中,格式可以被赋予:单个数字; 例如: proc format; value sexfmt 1=女 2=男 other=缺失值; run; 在这里定义了格式sexfmt,如果某个变量被赋予这种格式时,变量中的值为1的都将被标记为女,值为2的将被标记为男,值既不为1又不为2的将被标记为缺失值。,FORMAT过程,在VALUE语句中,格式可以被赋予:某一数值范围; 例如: proc format; value heifmt low-60=低于平均 60
49、-65=平均 65-high=高于平均; run; 在这里定义了格式heifmt,如果某个变量被赋予这种格式时,变量中的值在最小值与60之间的都将被标记为低于平均,在60到65之间的被标记为平均,在65到最大值之间的将被标记为高于平均。,FORMAT过程,在VALUE语句中,格式可以被赋予:字符、字符串或某一范围的字符; 例如: proc format; value $sexfmt F=女 M=男 other=缺失; run; 字符型格式只能被用于字符型变量。,FORMAT过程,一个实例: proc print data=sashelp.class label; /*format.sas*/
50、format sex $sexfmt; run; 注意字符型格式的调用方式。,TABULATE过程,使用PROC TABULATE产生汇总报表: 当一个SAS数据集包含 不太多的数据时 列表报表可以很好的描述数据; 大量信息时 需要用汇总报表描述。 汇总报表产生的步骤: 将数据根据需要进行分类; 在分类的基础上计算一些统计量; 如:频数、总和、均值、百分比等等。,TABULATE过程,在产生汇总报表前,首先必须在SAS数据集中定义分类变量和分析变量: 分类变量(Class Variables)具有以下特性: 可以是数值型变量或字符型变量; 如果是数值型变量,则代表某些离散的类; 可以将数据分类
51、,以便在每个类上进行计算和分析。 分析变量(Analysis Variables)具有以下特性: 多数是数值型变量; 适合于作各种统计计算。 例如:计数、求和、平均、百分比等等。,TABULATE过程,PROC TABULATE可以计算的统计量有: 频数(frequency); 均值(mean); 标准差(standard deviation); 最小值(minimum); 最大值(maximum); 极差(range); 总和(sum); 百分数(percentages);,TABULATE过程,最简单的TABULATE过程必须定义下列要素: 分类变量; 或分析变量; 表格的结构和格式。 P
52、ROC TABULATE DATA=数据集 选项; CLASS 分类变量序列;/*用空格隔开*/ VAR 分析变量序列; TABLE 页表达式,行表达式,列表达式/选项; RUN;,TABULATE的一般形式:,PROC TABULATE DATA=SAS-data-set options; CLASS class-variables; VAR analysis-variables; TABLE row-expression,column-expression /options; RUN; CLASS语句用于定义分类变量 VAR语句用于定义分析变量 TABLE语句用于定义表格的结构和格式,较为
53、常用的汇总表格 一般为两维,第一维为行,第二维为列。TABLE语句中变化较 多,将决定最终表格的形式。,TABULATE的一般形式:,TABLE语句由元素和操作符构成,元素是指变量和统计量, 操作符控制表格的形式,如下表:,TABULATE过程,应用例子: Proc tabulate data=sashelp.class; class name; table name; Run; /*tabulate.sas*/ 由于没有定义分析变量,则默认的统计量为N(频数),即某一类的有效观测数; 没有操作符的TABLE语句使变量的每一个值占据表格的一个单独列。,TABULATE过程,应用例子: Proc
54、 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; Run; /*tabulate3.sas*/ 使用两个逗号操作符隔开三个表达式将产生一个三维报表,第一个表达式定义页,第二个表达式定义行,第三个表达式定义列。
55、,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.sas*/ 使用星号操作符隔开两个元素将产生一个交叉等级报表。,TABULATE过程,在PROC TABULATE制作报表的过程中,还可以
56、使用以下的手段来增加报表的可读性: 使用FORMAT,LABEL,TITLE以及FOOTNOTE语句; 使用KEYLABEL语句为所有统计量加入标签 语句:KEYLABEL keywordlabel;,制作图形展现数据,SAS图形入门,SAS/GRAPH提供了许多过程,可以制作: 散点图及连线图(plots)显示详细数据 图标(charts)显示概括数据 地图(maps) 三维图形(three-dimensional graphics) 文本缩放及其他(text slides),1.散点图、折线图,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:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务平台商品代理销售居间服务协议
- 管道支护施工方案
- 瑜伽教学考试题及答案
- 驻地场地布置方案
- 汽车国标考试题及答案
- 幼儿国考试题及答案
- 青岛工商面试题及答案
- 园林天井装修方案
- 民宅租房改造方案
- 2026版《全品高考》选考复习方案生物604 第19讲 第2课时 中心法则及基因表达含答案
- 琦君散文-专业文档
- 企业会计准则、应用指南及附录2023年8月
- 初中数学浙教版九年级上册第4章 相似三角形4.3 相似三角形 全国公开课一等奖
- 主令电器(课用)课件
- DLT 5066-2010 水电站水力机械辅助设备系统设计技术规定
- 湘少版英语六年级下册全册教案
- 测绘生产困难类别细则及工日定额
- 湖南省长郡中学“澄池”杯数学竞赛初赛试题(扫描版含答案)
- 消防系统施工总进度计划
- 2022年广东省中山市纪念中学三鑫双语学校小升初数学试卷
- JJG30-2012通用卡尺检定规程
评论
0/150
提交评论