SAS基础讲义
- 格式:pdf
- 大小:4.05 MB
- 文档页数:99
第一课SAS软件的基本概念一.What is SAS?SAS - Statistics analysis system✧它是一个组合软件系统,由多个功能模块组合而成;✧其基本部分是 BASE SAS模块;✧BASE SAS 模块是 SAS 系统的核心:承担着主要的数据管理任务,管理用户使用环境,进行用户语言的处理,调用其他 SAS 模块和产品。
✧具有灵活的功能扩展接口和强大的功能模块:SAS/STAT(统计分析模块)SAS/GRAPH(绘图模块)SAS/QC(质量控制模块)SAS/ETS(经济计量学和时间序列分析模块)SAS/OR(运筹学模块)SAS/IML(交互式矩阵程序设计语言模块)SAS/FSP(快速数据处理的交互式菜单系统模块)SAS/AF(交互式全屏幕软件应用系统模块)我们的主要学习内容✧SAS/Base✧SAS/Stat✧SAS/Graph二.SAS 窗口系统Editor 窗口:编程窗口Log 窗口:显示程序运行过程Output 窗口:显示运行结果Explorer 窗口:用于管理 SAS 文件。
它可以◆查看SAS 文件◆产生外部文件的快捷路径◆产生新的SAS 文件◆打开SAS 文件看其内容◆移动,复制和删除文件◆打开相关的窗口,例如新的library 窗口Results 窗口:三.Base SAS 的内容●SAS language●SAS procedures●Macro facility●Data step debugger●Output delivery system四.SAS语言的基本要素✧data set options - SAS数据集选项✧SAS system options - SAS系统选项✧formats and informats - 输出格式和输入格式✧functions✧Statements - SAS语句五.SAS数据的结构SAS 数据由行和列组成。
一行成为一个观测值(observation), 一列成为一个变量(variable)。
一、SAS介绍1.SAS软件是由SAS公司开发的集数据仓库、大规模数据处理、数据挖掘、统计分析、图表制作、网页连接等为一体的计算机软体系统。
SAS是专业的统计分析软件,它对表格数据进行操作和统计分析比用Matlab更方便更专业。
2.SAS, SPSS, EXCEL 区别都能用于处理数据和统计分析,高级程度:SAS > SPSS > EXCELEXCEL一一侧重表格(办公),只能处理一些简单的数据分析,公式丰富,一般多用于计算(统计分析结果不全面);SPSS——专业统计分析软件,界面菜单式操作,简单易学,缺点是通用性不好(处理同样的数据,也要重复点菜单);SAS一一更专业统计分析软件,代码编程实现(通用性好),大多用于金融、医药等领域,用于大企业的数据分析,缺点是较难学。
3.要学好SAS,也离不开《统计学》。
现在是大数据时代,数据挖掘、数据库维护、做数据分析,在第一时间内获得或者找到最有价值的信息和资源,成为正确决策的依据, 这对金融、保险、医药、政府等企业和部门都至关重要。
SAS学习者的就业方向有:金融,银行、保险,证券、投行、临床研究,医药开发,市场调查,政府监管和教育研究部门。
5.我适合学SAS吗?学习SAS需要懂高等数学和统计学吗?实际情况是,任何专业背景的人,都可以学习并掌握SAS, 一经学会,终生受用。
不少人听说SAS是个统计分析软件,就自认为需要懂得高深数学和统计学的人才能学习,其实这是一个误区。
SAS在创办起,其宗旨是着重于80%工作量的统计分析前的数据处理,至于统计分析一旦数据就绪,通过相应的分析模块,几乎象傻瓜相机一样,谁都可以操作运行。
如果需要的统计方法学上提高或突破,恐怕不是统计分析的日常工作,而是统计方法学的科研了。
可见学习SAS不需要具备高等数学和统计学基础,只是需要有一般逻辑思维训练基础即可。
所以,只要遵循正确的学习道路并且获得有效的指导,就可以掌握扎实的SAS编程技能和技巧,再经过一定的经验积累,您也可以成为SAS行家里手,一直有许多学中(西)医、MBA、计算机、信息管理、经济(金融)、机械自动化,甚至英语专业的朋友成功转行SAS的例子。
第三章:对SAS 数据文件的合并与存取本章主要内容,是介绍SAS 软件对整个数据文件的存取及合并的方法,而上一章则主要是介绍对一个数据文件内变量的读取及处理方法。
我们先讲一讲如何用SAS 指令合并两个或多个数据文件。
一、 S AS 软件对两个及以上数据文件的合并在数据分析时,将两个不同的数据文件并为一个,以进行进一步的综合研究,有时是很必要的。
SAS 软件有两种合并两个数据文件的方法。
1、 垂直合并:垂直合并的方法,适用于已经用DA TA 类指令建立起的两个或多个SAS 数据文件,这些数据文件必须具有完全相同的变量(名称及内容),换句话说,两个数据矩阵应具有相同的列数。
这种合并是在一个新的DA TA 阶段里,通过“垂直合并表格指令”SET 来实现的。
合并后,一个表格接在另一个表格之下.........。
下面是一个这类合并的图例:我们有两张分别叫作“Table 1”和“Table 2”的SAS 表格,如下图:Table 1 Table 2 obs v1 v2 obs v1 v2可为地址,人名 观测单位用DA TA 类指令建立合并这两张表的程式可如下编写:在程式运行后,我们可以得到一个新的叫作Table3的SAS表格,这张新表包含有名叫Table1与Table 2的两张SAS数据表,是这两张表的垂直合并。
其形式如下图(Table2被接在表Table1之下):Table3如果被合并的表格(如上例Table1、Table2)并没有完全一样的结构,或者说没有一样的变量,合并指令仍会执行,所有有问题的数据在新的合并表中,将会以残缺数据符号“·”代替。
2、水平合并:与“垂直合并”一样,水平合并也是将已经建立好的两个或多个SAS数据文件,合并成一个新的数据文件,供数据分析之用。
被合并的数据文件,必须具有完全相同的观测单位。
或者说,两个数据矩阵的“行数”要完全相同,在合并前...,两个矩阵各自的第一列的元素也应当完全相同。
第五章: SAS软件对计算结果的编辑与打印SAS软件的计算结果一般都较长,往往有十余页甚至几十页之多。
为了便于阅读这份计算结果(LISTING)。
SAS软件里配备了相应的文件编辑指令,以及对输出结果的格式化指令,本章我们就向大家介绍这方面的内容。
—、标题与注脚:标题与注脚都是打印在每页计算结果上的说明性文字,用来解释SAS程式输出的数据处理结果。
它们作为SAS指令,可以既放在DATA 阶段的程式里,又放在PROC阶段程式中。
1.标题:标题的指令是TITLE ,后面应用引号把“标题”的全部内容括起来。
这条指令的一般形式是这样的:TITLE “用户定义的标题内容”;S AS软件规定一条标题最长可以包含132个字符(字母),每页标题最多可占据10行的空间。
当我们写下“TITLE”指令时,后面引号里的标题将会被印在每一页SAS程式计算结果的第一行上,当标题的内容过长或内容过多时,每页上第二行的标题应使用指令“TITLE2”,后面再用引号把第二行的标题内容括起来,如此类推,可以有“TITLE3”……。
当一个SAS程式里重新出现“TITLE”指令时,前面的“TITLE”指令会自动停止执行,而被新的“TITLE”指令的内容所替换。
如果在一个SAS程式里没有新的TITLE指令出现,原有的标题内容会重复印在每一页程式数据处理输出结果的首行上,直至最后一页。
而当用户想删去某一行的标题时,只需要在程式里简单的写下指令“TITLEn”(第n行)即可。
下面是几个“TITLE”指令的应用实例:TITLE“”;TITLE3 “”;2、注脚:SAS 程式注脚的指令是FOOTNOTE,注脚指令的使用原则与“TITLE”指令完全相同,只是它把注脚的内容印在每一页输出结果的最后—(n)行上。
下面是几个应用实例:FOOTNOTE “year 1997-1998”FOOTNOTE2 “Department of statistics”在每次输出结果的最后几行上,序号低的注脚将会被印在序号高的注脚上边。
第六章用SAS软件作统计分析本章我们将介绍如何利用SAS软件从事多种统计分析,比如计算分布频数,建立两个或多个变量的交叉表格,作统计描述,计算相关系数,以及作回归分析和方差分析等等。
我们先介绍关于计算分布频数和建立交叉表格的SAS指令。
一、用SAS程式计算分布频数和建立交叉表格:SAS软件的指令PROC PREQ,是专门用于计算分布频数,以及对单变量、双变量交叉和多变量交叉相适应的一般统计分析结果的子程式。
1.单变量的频数计算:频数分布计算指令PROC FREQ,属于SAS程式PROC部分中的指令,必须放在DATA部分的指令之后。
频数计算指令的一般表达式是这样的:TABLES 一个或一组被选定变量名单/B选择指令(可加可不加,通常不加) (可加可不加,视需要而定);选修** “A选择指令”的主要关键词是ORDER,其目的是使频数计算的结果按不同的标志排列打印,有下列几种主要指令可供用户选择:A选择指令意义ORDER=FREQ 按频数分布的大小从大到小排列ORDER=DATA 按数据的出现顺序排列PAGE 一页印一张表格.. (参Legros P48). **下面是一个单变量频数计算的指令实例:如: PROC FREQ; TABLES V1 V5-V10;程式执行后这条指令将产生V1,V5,V6,V7,V8,V9与V10,共七个变量的分变量频数表;在表上将给出以下计算结果:①每一个变量取值的分布频数(调查总体中对应于每一个变量值的样本个数)。
如变量V14,共有“.”,1,2,3四个取值;“.”的有1人,答“1”的有883人,答“2”的有15人,答“3”的有1人。
“. ,1,2,3”累计共900人,即调查总体含900人(参见Legros 附页P62)。
②每一个变量取值在总体中的分布频率。
如上例,答“.”的(拒答或nsp)有1人,其百分比为1/900*100%=0.1%;答“1”的有883人,占883/900*100%=98.1%;答“2”的有15人,占15/900*100%=1.7%;答“3”的有1人,占0.1%。
第一课SAS系统简介一.SAS系统1SAS系统的功能SAS系统是大型集成应用软件系统,具有完备的以下四大功能:●数据访问●数据管理●数据分析●数据呈现它是美国软件研究所(SAS Institute Inc.)经多年的研制于1976年推出。
目前已被许多国家和地区的机构所采用。
SAS系统广泛应用于金融、医疗卫生、生产、运输、通信、政府、科研和教育等领域。
它运用统计分析、时间序列分析、运筹决策等科学方法进行质量管理、财务管理、生产优化、风险管理、市场调查和预测等等业务,并可将各种数据以灵活多样的各种报表、图形和三维透视的形式直观地表现出来。
在数据处理和统计分析领域,SAS系统一直被誉为国际上的标准软件系统。
2SAS系统的支持技术在当今的信息时代中,如何有效地利用业务高度自动化所产生的巨量宝贵数据,挖掘出对预测和决策有用的信息,就成为掌握竞争主导权的关键因素。
因此,SAS系统始终致力于应用先进的信息技术和计算机技术对业务和历史数据进行更深层次的加工。
经过二十多年的发展,SAS系统现在是以下三种技术的主要提供者:●数据仓库技术(Data Warehouse)数据仓库是用于支持管理决策过程的面向主题的、集成的、随时间而变化的、持久的(非易失的)数据集合。
通俗的说,可以将数据仓库理解为“将多个生产数据源中的数据按一定规则统一集中起来,并提供灵活的观察分析数据手段,从而为企业制定决策提供事实数据的支持。
”数据仓库最大的用途是能够提供给用户一种全新的方式从宏观或微观的角度来观察多年积累的数据,从而使用户可以迅速地掌握自己企业的经营运转状况、运营成本、利润分布、市场占有率、发展趋势等对企业发展和决策有重要意义的信息,使用户能制定更加准确科学的决策迅速对市场做出反应。
利用数据仓库技术可以使大企业运作的像小企业一样灵活,也可以使小企业像大企业一样规范。
从目前情况来看,许多企业和机构已经建立了相对完善的生产数据库系统。
随着时间的推移,这些系统中积累了大量的历史数据,其中蕴含了许多重要的信息。
目标•了解SAS系统的功能特点;•熟悉AS系统操作环境;•掌握SAS系统的有关概念;•学会使用DATA Step读入外部数据文件以及对现有的数据集进行读入、修改、拼接以及合并;•学会使用PROC Step的几个重要过程对数据集进行操作;•学会使用ODS(输出传递系统)控制输出;•了解SAS宏语言;第一章SAS系统简介•SAS提供的基本运行环境:显示管理系统。
介绍显示管理系统中的有关窗口、菜单及操作。
•运行一个简单的SAS程序:proc print data=sasuser.admit;varname sex agewhere age gt30;run; 第一章SAS系统简介•SAS系统对数据的管理:*SAS数据集(data set):*SAS数据视图(data view):*SAS数据库(library)和库标记:第一章SAS系统简介*标记一个SAS数据库的两种方法:1、通过菜单进行;2、libname 库标记引擎数据源选项;练习:用两种方法分别建立:1、一个默认的SAS数据库;2、一个包含ORACLE数据的SAS数据库;3、一个包含ODBC数据的SAS数据库。
第一章SAS系统简介*SAS文件快捷方式(File Shortcut):*SAS文件的两级名:库标记.文件名*SAS的永久库和临时库:永久库:SASUSER、SASHELP、自定义的库;临时库:WORK第一章SAS系统简介练习:1、建立一个文件快捷方式。
2、使用SAS Notepad窗口来创建和保存SAS 程序第一章SAS系统简介•SAS变量的类型:*字符型变量(Character Variable):*数值型变量(Numerical Variable):•SAS数据集数据的格式:*输入格式(Informat):指示SAS系统如何读入数据。
*输出格式(Format):指示SAS系统如何输出数据。
第一章SAS系统简介它们的一般形式如下:*<¥>informat-name<w>.<d>*<¥>format-name<w>.<d>¥ 代表变量是字符型的informat-name 输入格式名format-name 输出格式名w 输入或输出的宽度. 必须的分隔符d 小数部分的长度第一章SAS系统简介•SAS系统提供的几种常用输入输出格式:w.d 标准的数字型格式¥w. 标准的字符型格式COMMAw.d 数字中加入逗号DOLLARw.d 数字中加入逗号,数字前加入¥DATEw. 日期格式BESTw. SAS选择最佳表示法此外,用户还可以自定义格式。
第一章SAS系统简介•实例对比:实际存储输入数据输入格式数据值输出格式显示结果12234.1234 →8.2 8.2 →12234.1212,234.1234 →comma8.2 →12234.12 →comma8.2 →12,234.12¥12,234.1234 →dollar8.2 dollar8.2 →¥12,234.12第一章SAS系统简介•SAS日期时间值:4Jan1776 1Jan1959 1Jan1960 1Jan1961 26Jul1989-67019 -365 0 366 10799•将一个日期时间表示为一个常数:将日期或时间加上引号,后面加上d,如’01JAN86’d 。
第一章SAS系统简介•SAS通过输入格式和输出格式将日期值与其他较易阅读的日期形式联系起来:如1992年10月16日可表示为:MMDDYYw. 101692(MMDDYY6.)或者10/16/92(MMDDYY8.)DDMMYYw. 161092(DDMMYY6.)或者16/10/92(DDMMYY8.)DATEw. 16OCT92(DATE7.)或者16OCT1992(DATE9.)第二章SAS程序•SAS 程序由两种程序步组成:*Data Step;(数据步)以data 语句开始,用以创建和处理SAS数据集;*Proc Step:(过程步)以proc 语句开始,主要用于处理SAS数据;第二章SAS程序•一个简单例子:data simple;set mylib.bclass;run;proc print data=simple;var name age height;where age=13;run;第一节Data Step•Data Step用于将原始数据文件转换成SAS数据集。
•Data Step的一般形式:DATA SAS-data-set; INFILE ‘filename’option; INPUT 语句;其他SAS语句;RUN;第一节Data Step•一个典型原始数据文件内容:1 1----5----0----5---(用于指出字符的位置)01MAR1995LON19801MAR1995FRA20701MAR1995LON205……第一节Data Step•一个简单应用:data europe;infile’c:\mylib\overseas.dat’;input @1 date $9. @10 dest$3. @13 boarded 3.;run;proc print data=europe;run;第一节Data Step •SAS系统执行数据步的过程:主要分为两个阶段:•编译数据步;•执行数据步:第一节Data Step在编译期间,SAS系统执行以下步骤:1)创建一个输入缓冲区来存放外部文件的一条记录:1 11 2 3 4 5 6 7 8 9 0 11 12 13 14 5 …2)创建一个PDV(Program Data Vector)来存放当前的一个观测;第一节Data StepVALUE:BOARDEDN8DEST$3DATE$9NAME:TYPE:LENGTH:第一节Data Step 3)创建SAS数据集的描述部分;EUROIPEDATE DEST BOAEDED$ $ N9 3 8Data Step 流程:YESNO第一节Data Step编译程序初始化变量执行INPUT 语句执行其它语句写入SAS 数据集下一个STEP 文件结束?第一节Data Step•使用INPUT 语句的column 模式读取外部原始数据文件:这种模式适合读入下列文件:•数据固定在某些列中;•数据中只包含标准的字符和数字;Column模式下INPUT语句的一般形式:INPUT variable ¥ startcol-endcol…;第一节Data Step其中:Variable:指的是变量名;¥:如果出现则说明此变量是字符型变量;Startcol:确定输入域中的起始列;Endcol:确定输入域中的结束列;如:input lname¥ 1-15 fname¥ 21-35 salary 46-51;第一节Data Step练习:用Column模式读入一个文件overseas.dat,该文件保存在c:\mylib 中,创建后的SAS数据集名为mylib.column,最后查看该数据集的内容。
第一节Data Step•使用INPUT 语句的Formatted 模式读取外部原始数据文件:这种模式适合读入含有不标准数据的文件,Formatted 模式中可以:•将输入指针移到数据域的开始位置;•定义变量名;•定义输入格式;第一节Data StepFormatted 模式下INPUT语句的一般形式是:INPUT pointer-control variable informat…;其中pointer-control 是输入指针控制符:@n 表示将输入指针移动到第n列;+n 表示将输入指针向后移动n列。
如:input lname ¥15. @21 fname +2 sex ¥1;第一节Data Step几个informat 的例子:7. 或者7.0 读入7列数字型数据;7.2 读入7列数字型数据,保留2位小数;¥6. 读入6列字符型数据;COMMA6. 读入6列数字型数据,去掉其中的非数字字符,如‘,’,‘¥’;MMDDYYw. 101692(MMDDYY6.)或者10/16/92(MMDDYY8.)DDMMYYw. 161092(DDMMYY6.)或者16/10/92(DDMMYY8.)DATEw. 16OCT92(DATE7.)或者16OCT1992(DATE9.)第一节Data Step练习:用Formatted模式读入一个文件overseas.dat,该文件保存在c:\mylib 中,创建后的SAS数据集名为mylib. Format,最后查看该数据集的内容.可以发现:用不同的模式有时可以得到同样的结果第一节Data Step•使用Data Step 增加数据集中的变量:•赋值语句的一般形式:variable=表达式;表达式中可以包含SAS操作符和函数。
•SAS函数的一般形式:函数名(参数1,参数2,…);(参数之间以逗号隔开,可以是常数、变量、表达式或其它函数)第一节Data Step常用的操作符:操作符作用举例+ 加法sum=x+y;-减法diff=x-y;* 乘法mult=x*y;/ 除法divide=x/y;** 幂运算raise=x**y;|| 字符串拼接str=str1||str2;第一节Data Step•一个应用例子:data mylib.dfwlax;infile'c:\mylib\dfw.dat';input filght$ 1-3date mmddyy6.dest$ 10-12 boarded 13-15trans 17-18nomev21;total=boarded+trans+nomev;(或total=sum(boarded,trans,nomev);)run;proc print data=mylib.dfwlax;format date date7.;run;第一节Data Step•条件转移语句:IF SAS条件表达式THEN 语句;ELSE 语句;(ELSE语句不是必须的)条件表达式主要包含操作数和操作符:变量名比较操作符操作数操作符常数逻辑操作符第一节Data Step操作符符号意义LT < 小于(less than)GT > 大于(greater than)EQ = 等于(equal)比较操作符LE <= 小于等于(less equal)GE >= 大于等于(greater than)NE ^= 不等于(not equal)IN 等于列举中的一个AND & 并且逻辑操作符OR -或者NOT ^ 非第一节Data Step 几个比较操作符用法的例子:If dest=‘LON’If dest in (‘lon’,’par’)If flight=‘219’If boarded lt150If mail>freight第一节Data Step•一个应用例子data dfwlax;infile'c:\mylib\dfw.dat';input filght$ 1-3date mmddyy6.dest$ 10-12 boarded 13-15trans 17-18nomev21;total=sum(boarded,trans,nomev);if dest='DFW'then rev=sum(boarded,trans)*600;else if dest='LAX'thenrev=sum(boarded,trans)*900;proc print data=dfwlax;format date date7.;run;第一节Data Step •用DROP=和KEEP=选项选择数据集的变量;它的一般形式是:DATA数据集(DROP=变量序列);DATA 数据集(KEEP=变量序列);练习:用DROP=和KEEP=选项修改前例。