SAS程序设计与应用课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《SAS程序设计与应用课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SAS 程序设计 应用 课件
- 资源描述:
-
1、 SAS程序设计与应用SAS Programming and Application许昌学院数学与统计学院许昌学院数学与统计学院吴亚桢吴亚桢SAS简介n将计算机用于统计计算将计算机用于统计计算,主要通过统计软件实主要通过统计软件实现现,其中最具有代表性和全球用户最多的统计其中最具有代表性和全球用户最多的统计软件是软件是SASSAS软件软件.经过近半个世纪的发展经过近半个世纪的发展,SAS,SAS已已经由一个单一的统计软件发展为大型决策支持经由一个单一的统计软件发展为大型决策支持系统系统,利用利用SASSAS软件进行数据处理和统计分析软件进行数据处理和统计分析,不仅能得到各种检验统计量对应的确切
2、概率值不仅能得到各种检验统计量对应的确切概率值,而且许多复杂的统计计算通过轻点鼠标就可以而且许多复杂的统计计算通过轻点鼠标就可以完成完成.SAS.SAS以其强大完善的数据处理与统计分析以其强大完善的数据处理与统计分析功能被公认为国际上标准的统计分析软件功能被公认为国际上标准的统计分析软件.SAS简介nSASSAS系统全称为系统全称为Statistics Analysis System,Statistics Analysis System,最早由北卡罗来纳大学的两位生物统计学研究最早由北卡罗来纳大学的两位生物统计学研究生编制生编制,并于并于19761976年成立了年成立了SASSAS软件研究所软
3、件研究所,正正式推出了式推出了SASSAS软件软件.SAS.SAS是用于决策支持的大型是用于决策支持的大型集成信息系统集成信息系统,但该软件系统最早的功能限于但该软件系统最早的功能限于统计分析统计分析,至今至今,统计分析功能也仍是它的重要统计分析功能也仍是它的重要组成部分和核心功能组成部分和核心功能,同时系统的功能也逐渐同时系统的功能也逐渐扩展到线性与非线性规划、时间序列分析、运扩展到线性与非线性规划、时间序列分析、运筹决策支持、数据仓库和数据挖掘等领域筹决策支持、数据仓库和数据挖掘等领域.在在数据处理和统计分析领域数据处理和统计分析领域,SAS,SAS系统被誉为国际系统被誉为国际上的标准软件
4、系统上的标准软件系统,堪称统计软件界的巨无霸堪称统计软件界的巨无霸.SAS简介nSASSAS一直为业界著名软件,在数据处理和统计一直为业界著名软件,在数据处理和统计分析领域,被誉为国际上的标准软件和最权威、分析领域,被誉为国际上的标准软件和最权威、最优秀的统计软件包,最优秀的统计软件包,尽管价格不菲,尽管价格不菲,SASSAS已已被广泛应用于政府行政管理、科研、教育、生被广泛应用于政府行政管理、科研、教育、生产和金融等不同领域,发挥着重要的作用。产和金融等不同领域,发挥着重要的作用。n虽然近几年虽然近几年SASSAS才在我国得到广泛应用,但是才在我国得到广泛应用,但是随着计算机应用的普及和信息
5、事业的不断发展,随着计算机应用的普及和信息事业的不断发展,越来越多的单位采用了越来越多的单位采用了SASSAS软件。软件。SASSAS作为专作为专业统计软件中的巨无霸,目前还没有其它统计业统计软件中的巨无霸,目前还没有其它统计软件包能与之抗衡。该统计软件主要适合于统软件包能与之抗衡。该统计软件主要适合于统计工作者和科研工作者使用。计工作者和科研工作者使用。SAS简介n由于由于SASSAS最初是从大型机上的统计分析系统起家最初是从大型机上的统计分析系统起家,因此因此其核心操作方式一直是程序驱动其核心操作方式一直是程序驱动.虽然近年来虽然近年来SASSAS也提也提供了好几种界面操作模块供不同层次的
6、用户选择供了好几种界面操作模块供不同层次的用户选择,但这但这并未动摇程序驱动方式的核心地位并未动摇程序驱动方式的核心地位.这是因为这是因为SASSAS是将是将用户群定位在专业统计分析人员上用户群定位在专业统计分析人员上,它必须要为使用者它必须要为使用者提供尽量强大的统计分析功能提供尽量强大的统计分析功能,以满足各种非常专业的以满足各种非常专业的需求需求.另一方面另一方面,由于专业统计分析人员经常需要尝试由于专业统计分析人员经常需要尝试使用各种类型的统计模型使用各种类型的统计模型,这就需要这就需要SASSAS在操作上有尽在操作上有尽量高的灵活性量高的灵活性,允许用户自行编程实现各种新算法允许用户
7、自行编程实现各种新算法.显显然然,这种要求使用菜单方式几乎是无法实现的这种要求使用菜单方式几乎是无法实现的.因此因此,如如果要真正掌握果要真正掌握SASSAS的使用的使用,我们仍然要抛开其华丽的外我们仍然要抛开其华丽的外表表,从学习它的核心从学习它的核心-SAS-SAS程序开始程序开始.第一章第一章 SASSAS编程入门编程入门SAS语句的基本结构nSASSAS程序由若干个语句组成程序由若干个语句组成,多数语句都多数语句都由特定的关键字开始由特定的关键字开始,语句中可包含变量语句中可包含变量名名,运算符等运算符等,它们之间以空格分隔它们之间以空格分隔.所有所有的语句都以分号的语句都以分号“;”
8、;”结束结束,SAS,SAS对语句所对语句所占的行数并无限制占的行数并无限制,一个语句可占一行一个语句可占一行,也可占多行也可占多行;反之反之,多个语句也可写在同多个语句也可写在同一行内一行内.下面是一个简单的程序示例下面是一个简单的程序示例:SAS程序ndata a;ninput x;ncards;n1 2 3 4 5 6 7 8 9n;nproc print;nvar x;nrun;nquit;数据步与过程步nSAS程序有着模块化的特点,虽然每一个具体的SAS程序可以非常复杂,但其基本结构一般都是由环境设置语句和数个完成单个动作的程序步构成.n在SAS中只有两种程序步:数据步(Data S
9、tep)和过程步(Proc Step).前者用来创建和修改用于统计分析的数据集,后者则利用已创建的数据集完成特定的统计分析任务.数据步 n以DATA语句开始,用于创建和处理数据集。其中最常用的语句有:nDATA语句 它的主要功能是:标志数据步的开始。命名将要创建的SAS数据集。DATA语句的一般形式如下:DATA 数据集名;INPUT语句 nINPUT语句 用于向系统表明如何读入每一条记录。它的主要功能有:读入由语句指定的数据列。为相应的数据域定义变量名。确定变量的读入模式。INPUT语句的格式如下:INPUT 变量名 变量类型 起止列数.;方括号表示其中的内容为可选,如果不输入,系统会以默认
10、值代替。INPUT语句n以下是几个例子ninput x y z;ninput x1-x10;ninput x$y;n其中第2句使用了缩写符号,第3句中的$指明变量x为字符变量,表明数据是连续读入的。CARDS语句 nCARDS语句 用于直接输入数据,标志着数据块的开始,随后紧跟着需要读入的数据。格式如下:CARDS;数据块 ;INFILE语句 nINFILE语句 用于从外部文件读入数据,必须出现在INPUT语句之前。它的主要功能是:确定一个包含原始数据的外部文本文件。INFILE语句的格式如下:INFILE 外部文件的所在位置及名称 选项;数据的两种输入方式 n上面我们学到了INFILE语句和
11、CARDS语句,它们分别对应了两种数据输入的方式:n【直接输入方式】实际上我们在前面已经用到了直接输入方式 SAS程序ndata temp;命名将要建立的数据集为tempninput x y;要输入的变量为x、y,并且连续输入ncards;直接输入数据,数据块开始n34 56 78 90 35 67 89 10 23 65 77 45 数据块n;数据块结束SAS程序n变量后面的表示数据可以在一行里连续读入,SAS默认按列来分隔变量,可是这里只有两个变量,输成两列数据太长,因此加上两个,SAS见到这个符号,在按变量名依次读取完数据后,不是跳到下一行,而是继续在该行读数据,直至本行结束或到达分号为
12、止。n如果你对这段叙述无法理解,请去掉两个,重新运行一遍程序,看看视窗中的提示都有些什么变化。【外部文件读入方式】n如果刚才的数据已经事先输好,在硬盘上的“C:USER”文件夹内存为temp.txt文件,该文件内容如下(纯文本):n34 56 78 90 35 67 89 10 23 65 77 45n则我们可以输入程序如下:ndata temp;命名将要建立的数据集为tempnInfile c:usertemp.txt;指定外部数据文本文件名ninput x y;要输入的变量为x、y;数据步结束,以上语句可以执行了.SET语句n此语句的功能是将指定数据集的内容完整地复制到新建的数据集中,当从
13、头新建SAS数据集时并不需要使用set语句。但如果想在原有数据集基础上进行数据编辑,则set语句将会非常有用。SAS程序的过程步程序的过程步 n通俗的讲,SAS的过程步就是已经编好了的用于实现各种统计分析功能的计算机程序,你只需要按照规定好的格式调用它们就是了。过程步总是用一个PROC语句开始,后面紧跟着过程步名,用以区分不同的过程步。以下是一些常用的过程步的名称及功能。程序步名及功能nSORT 将指定的数据集按指定变量排序nPRINT 将数据集中的数据列表输出nMEANS 对指定的数值变量进行简单的统计描述nIML 矩阵操作与运算nTTEST 对指定的变量做t检验程序步名及功能nANOVA
14、对指定的变量做方差分析nNPAR1WAY 对指定的变量做非参数检验nREG 对指定的变量做回归分析nCORR 对指定的变量做相关分析nGCHART 绘制统计图形过程步nPROC就是过程(procedure)的缩写,而过程步的名字大都是其功能相对应的单词或词组的缩写。可见SAS的许多功能就是通过过程步来体现的,可如此多的种类也使我们难以总结出一个过程步的通式来。不过仍可大致给出如下结构:PROC 过程名 DATA=数据集名 选项;该过程的专用语句描述;VAR 变量序列;WHERE 条件表达式.;BY 变量序列;Run;过程步n方括号里的语句均可以省略,在这时该过程按最通常的情况来处理,即:n处理
15、最新建立的SAS数据集。n处理所有的变量(或对一个计算过程来说处理全部数值变量)。n一次处理整个数据集而不是某个子集。n我们在前面用到的PRINT程序步就是采用的这种默认方式。过程步n但有时我们的要求超出了默认方式所提供的范围,这时就要动用方括号里的秘密武器了。nDATA选项 指明所需处理的数据集名,请注意在这里它是一个参数而不是语句。nVAR语句 如果只想分析某一个或几个特定的变量,则可用VAR语句指定它们。例如在数据集中有x、y两个变量,如果只想显示变量x的列表,则PRINT过程如下:程序步nProc print;nVar x;nRun;n如果想显示x和y两个变量,则将VAR语句改为如下形
16、式即可:nvar x y;n当然,也可以将VAR语句删除,结果相同。第二章第二章 数据管理入门数据管理入门变量的筛选n在数据集建立后,如果需要删除其中的某些变量,则可以使用keep/drop语句来实现,keep/drop语句只能使用其中一个,不能同时出现。其中keep语句指定需要保留的变量,其余变量均被删除,而drop语句则指定需要删除的变量,其余变量均被保留。数据集的排序n将数据集中的观测按照一个或多个变量的数值大小进行排序是常见的操作,该功能在SAS中使用sort过程实现,该过程的语法结构如下:nproc sortnby descending变量名;n其中descending选项用于变量为
17、降序排列。数据集的纵向连接n数据集的纵向连接指的是几个数据集中的数据纵向相加,组成一个新的数据集,新数据集中的记录数是原来几个数据集中记录数的总和。在SAS中使用set语句实现。数据集的横向合并n横向合并指的是按照记录的次序,或者某个关键变量的数值将不同数据集中的不同变量拼接为一个数据集,新数据集中的变量数是所有原数据集中不重名变量的总和。在SAS中使用mergemerge语句实现。程序举例程序举例n某班有若干名同学,每个同学的信息包某班有若干名同学,每个同学的信息包括学号括学号(num)(num)、姓名、姓名(name)(name)、性别、性别(sex)(sex)、成绩成绩(score)(s
18、core)等项,每个学生有等项,每个学生有3 3门课程,门课程,请把该班同学的信息输入请把该班同学的信息输入SASSAS数据集并分数据集并分别按总成绩由高到低的顺序进行排序,别按总成绩由高到低的顺序进行排序,给出给出SASSAS程序及运行结果。程序及运行结果。n数据如下:数据如下:n1001 Kate f 97 83 82n1002 Tom m 95 89 84n1003 Jenny f 93 91 83n1004 Alex m 92 90 91n1005 Alice f 90 85 91程序如下:程序如下:ndata score;data score;ninput num name$sex$
19、s1-s3;input num name$sex$s1-s3;ntotal=sum(of s1-s3);total=sum(of s1-s3);ncards;cards;n1001 Kate f 97 83 821001 Kate f 97 83 82n1002 Tom m 95 89 841002 Tom m 95 89 84n1003 Jenny f 93 91 831003 Jenny f 93 91 83n1004 Alex m 92 90 911004 Alex m 92 90 91n1005 Alice f 90 85 911005 Alice f 90 85 91n;nproc
20、sort data=score out=cs2;proc sort data=score out=cs2;nby descending total;by descending total;nproc print;proc print;nrun;run;nquit;quit;n如果按总成绩由低到高的顺序进行排序,如果按总成绩由低到高的顺序进行排序,则程序改为:则程序改为:nproc sort data=score out=cs2;proc sort data=score out=cs2;nby total;by total;nproc print;proc print;nrun;run;nqui
21、t;quit;程序举例程序举例n某班有若干名同学,每个同学的信息包某班有若干名同学,每个同学的信息包括学号括学号(num)(num)、姓名、姓名(name)(name)、性别、性别(sex)(sex)、成绩成绩(score)(score)等项,每个学生有等项,每个学生有3 3门课程,门课程,分别是数学(分别是数学(mathmath)、语文)、语文(chinese)(chinese)、英语英语(english)(english),请把学号、姓名、性别,请把学号、姓名、性别这些信息放在这些信息放在SASSAS数据集数据集studentstudent中,把中,把成绩信息放在成绩信息放在SASSAS数
22、据集数据集testtest中,并把这中,并把这两个数据集横向及纵向合并,给出两个数据集横向及纵向合并,给出SASSAS程程序。序。数据如下:数据如下:n数据如下:数据如下:n89100 ZHANGLI F 79 96 87 89100 ZHANGLI F 79 96 87 n89101 LIUWEI M 69 78 9289101 LIUWEI M 69 78 92n89102 WANGMING M 68 87 93 89102 WANGMING M 68 87 93 n89103 CHENHONG F 88 93 9089103 CHENHONG F 88 93 90n89104 WANGL
23、I F 76 89 8889104 WANGLI F 76 89 88程序如下:程序如下:ndata student;data student;ninput num name$sex$;input num name$sex$;ncards;cards;n89100 ZHANGLI F 89100 ZHANGLI F n89101 LIUWEI M 89101 LIUWEI M n89102 WANGMING M 89102 WANGMING M n89103 CHENHONG F 89103 CHENHONG F n89104 WANGLI F 89104 WANGLI F n;nproc p
24、rint;proc print;ndata test;data test;ninput t1-t3;input t1-t3;ncards;cards;n79 96 8779 96 87n69 78 9269 78 92n68 87 93 68 87 93 n88 93 9088 93 90n76 89 8876 89 88n;nproc print;proc print;ndata studtest;data studtest;nmerge student test;merge student test;nproc print;proc print;ndata c;data c;nset st
25、udent test;set student test;nproc print;proc print;nrun;run;nquit;quit;n上例中把学号、姓名、性别这些信息放上例中把学号、姓名、性别这些信息放在在SASSAS数据集数据集studentstudent中,把成绩信息放中,把成绩信息放在在SASSAS数据集数据集testtest中,还可以用如下程序中,还可以用如下程序实现。实现。ndata class;data class;ninput num name$sex$t1-t3;input num name$sex$t1-t3;ncards;cards;n89100 ZHANGLI
展开阅读全文