一、SAS 基础
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、SAS 基础
SAS的全称为统计分析系统(Statistical Analysis System SAS),是当今国际上最著名的数据分析软件之一。
20世纪60年代末由美国北卡罗来纳州州立大学的几位教授开始研发,1975年创建美国SAS研究所。
之后,推出的SAS系统,经过30多年的不断发展与完善,目前已成为大型集成应用软件系统,是当前国际上较为流行、并且具有权威性的统计分析软件之一。
广泛应用于金融、医药卫生、通信和教育科研等领域,完成统计、图表分析、时间序列分析等工作。
SAS是一个庞大的系统,它由许多模块组成,每个SAS模块都是由很多可执行的文件组成,它们被称之为SAS过程(SAS PROCEDURE)。
我们在调用SAS过程解决具体问题时,通常需要用SAS语言编写一段程序,通过它建立起我们与SAS系统之间的联系,我们称之为SAS程序(SAS PROGRAM)。
应用SAS的关键就是要写出满足各种统计要求的SAS程序,编写程序的前提条件是我们要对SAS语言有较详细的了解,这一点对初学者来说有一定困难。
虽然,近年来随着图形界面、用户友好等程序思想的发展,在视窗版本的SAS中也逐渐提供了一些不需要编程就能进行数据管理、分析和绘图等功能,但是,SAS的编程方法在实际应用的过程中仍然是非常重要的。
许多学习SAS的人员通过自己的实践总结出一条经验,即“了解一些重要的基本概念,掌握一些重要语句的命令格式,使用和修改相关SAS书中或前人已写好的SAS程序,使其成为适合分析现有数据资料的新程序。
”这样可以使SAS的应用化繁为简、事半功倍。
一、启动SAS
在Windows环境中,从开始菜单的程序文件夹中找到SAS 系统文件夹,从中启动SAS 系统。
或者将SAS.EXE 的快捷方式放到桌面上,然后双击SAS.EXE 启动。
二、SAS语言:
SAS 系统强大的数据管理能力、计算能力、分析能力依赖于作为基础的SAS 语言。
SAS 语言是一个专用的数据管理与分析语言,它的数据管理功能类似于数据库语言(如FoxPro),但又添加了一般高级程序设计语言的许多成分,以及专用于数据管理、统计计算的函数。
SAS 系统的数据管理、报表、图形、统计分析等功能都可以用SAS语言程序来调用,只要使用者指定要完成的任务就可以由SAS 系统按照预先设计好的程序去进行。
本次课主要介绍SAS的一些基本概念、语言的组成、编写程序的规则、SAS视窗等,了解SAS语言是如何管理数据以及SAS过程使用的初步知识。
三、SAS 语句
SAS 语言的基本单位是语句,每个SAS 语句一般由一个关键字开头(如DATA,PROC procedure,INPUT,CARDS,BY),以分号(;)结束。
SAS 关键字是用于SAS 语句开始的特殊单词,SAS 语句除了赋值、累加、注释、空语句以外都是以关键字开头。
SAS 关键字不区分大小写。
SAS语句的名称是以关键字命名的。
※四、SAS程序的基本组成与规则:
SAS 程序包括数据步和过程步两部分,每一个步骤是一段相对完整的可以单独运行的程序。
数据步用来生成、整理数据和进行自编程计算,过程步是调用SAS 已编好的处理过程对数据进行处理。
例1.1
data aa;
input sbp weight;
cards;
132146 DATA 步(数据步)
142178
128168
;
run;
proc reg;
model sbp=weight; PROC 步(过程步)
run;
※数据步(DATA步):
data 数据集名;
…
run;
数据步以DATA语句开头,以RUN语句或另一个数据步/过程步结束。
其作用是:①标志数据步的开始;②命名将要建立的SAS数据集(自定义数据集名称或系统默认)。
完成变量的设定、数据的输入、整理、转换、计算和数据输出等各种数据处理功能。
具体地说,就是建立起变量与数据之间的联系,是进一步分析的前提。
如上例程序中DATA 步提交后,SAS系统就会创建一个名为aa的SAS数据集,该数据集内包含两个变量,每个变量有三个观察数值。
数据步中常用的语句:(…)
data语句:指定要创建的SAS数据集
input语句:用于指定输入的变量名、变量数目和格式
cards语句:在cards语句和一个分号(;)(单独一行)之间输入数据块
infile语句:用于从外部调用一个文本格式文件(纯文本)的数据(不常用)
libname语句:用于指定一个永久逻辑库(只用于数据步)
过程步(PROC步):
proc 过程名选项(可有可无);
过程语句选项;
run;
以PROC语句开头,后面紧跟程序步名(多数是与其功能相对应的英文单词或词组,例如PROC print;PROC means),以RUN语句结尾,当程序中有多个过程步时,中间的RUN结尾语句可以省略,因为下一个过程步或数据步出现后,当前的步骤就自动结束,但程序的最后RUN语句不能省略。
(数据步亦然)
过程步的作用:是激活SAS过程,调用过程库中已编好的用于数据整理和统计分析的计算机程序。
结合上例程序PROC提交后,SAS 系统将从过程库中调出REG过程,并对新建立的SAS数据集aa 中的变量作线性回归分析,并输出分析结果。
常用的过程语句:
var语句:在过程中用来指定分析变量。
(数值型)
Model语句:在一些统计建模过程中用来指定模型的形式。
一般
形式为:model 因变量=自变量/选项(即用自变
量预测因变量)
By和class语句:by语句在过程中一般用来指定一个或几个分组变量(预先排序),根据分组变量把观测分组。
如:proc print data=aa; by sex; 即按照性别分组后输出数据到窗口。
class语句,如方差分析中,用来指定一个或几个分类变量,把观测按分类变量分类后分别进行分析,使用class时不需要预先按分类变量排序。
最简单的SAS程序就是由一个数据步和一个过程步组成,但通常,一个SAS程序中可以包含多个SAS数据步和多个过程步。
规则:SAS 程序由语句构成。
每个语句以分号结尾(最常见的SAS 编程错误就是丢失分号)。
因为分号作为语句结束标志,所以SAS 语句不需要单独占一行(但初学时为了清楚程序的运行过程,希望以一句一行的形式书写程序),一个语句可以写到多行(不需任何续行标志),也可以在一行连续写几个语句。
例1.2
proc print
data=c9501;
by avg;
run;
和
proc print data=c9501;by avg;run;
是等效的。
在SAS 程序中可以加入注释,注释使用C 语言语法,用/*和*/
符号在两端界定注释文字,这种注释可以出现在任何允许加入空格的
程序书写位置,可以占多行。
我们一般只把注释单独占一行或若干行,不把注释与程序代码放在同一行。
注释的另一个作用是把某些程序代码暂时屏蔽使其不能运行。
下面是一个注释的例子:
/* 生成95 级1 班考试成绩的数据集 */
data c9501;
…
五、SAS数据集(打开才能看到即只在SAS环境下读)
SAS数据集(SAS Datasets)是各种特殊格式的SAS文件中最重要的一种。
它的结构可以看作是由若干行和若干列组成(二维表)的一个表格,与很多数据库软件(如dBase、Foxpro等)生成的关系型数据库结构相同。
数据集的组成:
1.变量/字段(Variable var):相同特性的数据值的集合用变量来标志,即表中每一列都是一个变量,通常是需要给变量赋予名称。
变量是有属性的。
变量的类型有两种:
字符型变量——以ASCII码存放,值的最大长度不超过200个字符;
数值型变量——以浮点数存放,长度为8个字符。
2.观测值(Observation obs):上表中的每一行组成一个观测值(观察对象),一个观测值也可叫作一条记录。
3.数据值:SAS数据集中每一个元素就是一个数据值,即行和列的交叉点,如name变量下第1行,数据值是李明,math变量下第1行数据值是92等。
了解在SAS/INSIGHT模块中为了区分变量在分析中的不同作用,变量又分为区间型变量(interval)和名义变量(nominal)。
区间型变量必须是数值型变量,可以对其观测值进行运算、计算各种统计量。
名义型变量可以是数值型的(以数值分类也可看成名义的),也可以是字符型的。
在变量类型缺省的情况下,Insight模块对所有数值型变量冠以区间型,对所有字符型变量冠以名义型。
上例数据集中有5个观察单位,代表5个学生的情况,每个学生有6个变量。
从上面例子可以看出,数据集要有名字,变量要有名字,所以SAS 中对名字(数据集名、变量名、数据库名,等等)有约定:SAS 名字由英文字母、数字、下划线组成,第一个字符必须是字母或下划线,大写字母和小写字母不区分。
比如,name,abc,aBC,x1,year12,_NULL_等是合法的名字,且abc 和aBC 是同一个名字(同名覆盖);而class-1(不能有减号)、a bit(不能有空格)、serial#(不能有特殊字符)、Documents(超长)等不是合法的名字。
原则:简单、明确。
六、SAS数据库(位置,即一个文件夹)临时库一个,永久库若干个
SAS系统有三个预定义的数据库:WORK、SASUSER、SASHELP。
其中,WORK数据库叫做临时库,存放在其中的SAS文件叫临时文件,这些临时文件当退出SAS系统时会被自动删除。
SASUSER库可以保存与用户个人设置有关的文件,它是永久库,退出SAS时文件不会删除。
SASHELP 库保存与SAS帮助系统、例子有关的文件(只读文件),是永久的。
除此之外,用户也可以自定义永久库,指定一个在磁盘上已存在的文件夹1作为SAS的永久库,我们只需要为这个库起一个逻辑库名2(即永久库的符号),在SAS工作中使用该逻辑库名来代表永久库,其位置即已经存在的文件夹。
逻辑库名一旦指定,在本次SAS工作中都有效,如果退出SAS后再次进入时逻辑库名要重新定义。
永久库可以建立多个,以不同的逻辑库名表示不同的已经存在的文件夹。
可定义在程序里,见例1.3
从上面我们可以看出,SAS 系统对数据文件的管理是根据数据存放的位置(类型)分为临时文件和永久文件:临时文件在退出SAS 系统时自动被删除,永久文件在退出SAS 系统时不自动被删除。
所以,我们通常是把作为中间结果使用的数据集或练习用的数据集作为临
时数据集保存,而需要以后再用的数据集则可以保存为永久数据集。
数据集的命名:
临时数据集和永久数据集命名的区别是:
[※临时数据集以单水平命名,即只有数据集名,比如C9901。
※永久数据集则是两水平命名:前一部分是它的库名,后一部分才是数据集名,中间用小数点连接。
(即库名.数据集名)比如,要将建立的teach数据集放到aa库(永久库)中,数据集的
命名必须用aa .teach来完成。
以这样方式指定的数据集名在程序提交运行后可以放到由aa指定的目录(文件夹)中。
同样要想读取或调用永久库中的该数据集时,也要以两水平命名方式(aa.teach)指定要读取的数据集。
]
生成永久库的方法有两种:
1.用程序的方式指定永久库:(SAS程序中不能有路径,但libname 除外)????????????
例1.3
libname aa ‘e:\class’;
data aa.c9901;
…
Run;
调用永久库中已经保存的数据集:(print意为输出窗输出)
proc print data=aa.c9901;
run;
2.在窗口用工具按钮生成(见视窗演示)
七、SAS 表达式
SAS 常量主要有数值型、字符型两种,并且还提供了用于表达日期、时间的数据类型。
例如
数值型:12,-7.5,2.5E-10
数值型常数可以用整数、小数等。
字符型:'Beijing',"Li Ming","李明"
字符型常数为两边用单撇号或两边用引号(‘’)包围的若干字符。
日期型:'13JUL1998'd 日月年
日期型常数是在表示日期的字符串后加一个字母d(大小写均可),中间没有空格。
因为SAS 是一种数据处理语言,而实际数据中经常会遇到缺失值,比如没有观测到数值,被访问人不肯回答,等等。
SAS 中用一个单独的小数点(.)来表示缺失值常量。
SAS 运算符包括算术、比较、逻辑等运算符。
算术运算符:+ - * / **(乘方),运算优先级按通常的优先规则。
比较运算符:= (EQ):等于
> (GT):大于
< (LT):小于
>= (GE):大于等于
<= (LE):小于等于
^= (NE):不等于(或<>)
逻辑运算符:有三种逻辑运算符:AND(逻辑与)同时都存在范围小OR(逻辑或)满足其一范围大 NOT(逻辑非) ,常用于条件语句
注意临界!!!莫丢!!!
例如:
●(salary >= 1000) AND (salary < 2000)
表示工资收入在1000-2000 之间(不含2000)
●(age <= 3) OR (sex = '女')
表示三岁以下(含三岁)的婴儿或者女性
●NOT ((salary >= 1000) AND (salary < 2000))
表示工资收入不在1000-2000 之间
复杂的逻辑表达式最好用括号表示其运算的优先级。
八、视窗概述(启动SAS)
当您第一次启动SAS 时,将打开 5 个SAS 主窗口(显示3个窗口,但可以切换):
SAS 资源管理器窗口
结果窗口
程序编辑器窗口
日志窗口
输出窗口。
1.SAS 资源管理器窗口
在“SAS 资源管理器”窗口中,可以查看并管理SAS 文件。
可使用此窗口:
∙创建新的SAS 逻辑库和SAS 文件
∙打开任意SAS 文件
∙执行大多数文件管理任务,如移动、复制及删除文件
∙创建文件快捷方式
SAS library(SAS 逻辑库)
SAS 逻辑库也称SAS 永久库。
它是一个或多个可由SAS 识别并作为单元引用或存储的SAS 文件的集合。
每个文件都是该逻辑库的成员。
2.程序编辑(PGM)窗口
“编辑器”窗口提供了一些有用的程序编辑功能,如编写程序命令、键入数据、读入文字等。
新版SAS还采用了视觉辅助系统,在编写程序时使用不同的颜色来区分程序中的不同元素,例如:数据步和过程步以深蓝色标记、语句以浅蓝色标记、数据块以黄背景色标记,参数或选项以黑色标识等,帮助用户更清楚地编写、调试SAS程序。
“编辑器”窗口的初始标题是“编辑器—无标题n”。
在您打开文件或将“编辑器”窗口中的内容保存到文件时,窗口标题将更改为相应的文件名。
如果对“编辑器”窗口中的内容进行了修改,标题中将添加一个星号。
您可以同时打开多个“编辑器”窗口。
保存已编辑好的程序文件,在文件菜单中选择保存项,指定文件保存的位置,并给出文件名,扩展名是 *.sas,文件标识是跑动的小人。
3.日志(Log)窗口
“日志”窗口显示有关SAS 会话以及提交的所有SAS 程序的消息。
记录提交执行的SAS语句执行后的有关详细说明,当出现程序语法错误或语句使用不当时,此窗口会显示记录错误(error)或显示警告(warning)等信息。
保存记录文件的扩展名为*.log 。
4.输出(Output)窗口
“输出”窗口显示提交的SAS 程序的分析结果。
创建输出时,该窗口将自动打开或移至显示的前端。
保存输出结果(output)文件的扩展名是*.lst,文件标识是表格。
5.结果窗口
当用户执行了编程或非编程时获得了SAS系统处理的结果,同时将以文件名的方式显示在左侧“结果”窗中(以HTML-超文本标记语言产生的输出结果)。
“结果”窗口可帮助您浏览并管理提交的SAS 程序所生成的输出,可以在结果视窗中双击文件名。
“结果”窗口在提交可创建输出的SAS 程序之前一直是空的,之后该窗口可打开或移动到显示前端。
6. SAS菜单栏及工具栏
1)标题区(Title Bar):位于主窗口左上角,用以标识视窗执行软件的标题。
2)视窗大小控制区:与其它视窗软件操作相同
3)菜单区(Menu Bar):
SAS 主窗口标题栏下是主菜单。
从SAS 6.10版开始,其菜单和工具栏都是活动的,即菜单内容根据用户所处的状态(位置)不同而不同,如当光标在编辑窗时,会出现“运行“菜单,但光标在日志窗时,“运行”菜单则隐藏起来。
File(文件)菜单:主要是有关SAS 文件调入、导出、保存、
打印以及退出SAS系统的功能。
Edit(编辑)菜单:用于窗口的编辑(如清空、复制、剪切、
粘贴、查找、替换)。
View(查看)菜单:用于打开或切换窗口
Tool(菜单):用于数据查询、调用各种编辑器(表格、
图形、报表、文本等)
Run(运行)菜单:用于提交编辑窗口的程序以及远程操作Solution(解决方案)菜单:该菜单下功能较为复杂,在SAS9.13版本
与前版本有所变化:
Window(视窗)菜单:窗口的布局调整以及切换
4)命令行(命令盒,enter a command):位于工具按钮的左侧,是用户键入命令的区域,单击“√”执行所键入的命令。
5)工具栏(Tool Bar):大部分图标的用法大家都比较熟悉,新按钮如“添加新逻辑库”、“SAS资源管理器”、“提交(程序)”
和“中断”等。
练习1:
1.启动SAS,认识视窗界面,主要窗口相互间的切换及各自的功能2. 复习SAS语句的格式,SAS程序的组成以及数据步、过程步的规则。
3.建立个人永久库,以放置实习文件。
4. 练习在程序编辑窗中输入以下程序:12名女大学生体重(weight)与肺活量(vital capacity)测量数据
data lanxi1;
input code$ weight vc; ?????
cards;
1 4
2 2.55
2 42 2.20
3 46 2.75
4 46 2.40
5 4
6 2.80
6 50 2.81
7 50 3.41
8 50 3.10
9 52 3.46
10 52 2.85
11 58 3.50
12 58 3.00
;
proc print;
proc means;
run;
4. 观察SAS各窗口的输出内容。
5. 对输出结果可以进行修饰:
1)取消系统自动报告的日期及时间信息:
在程序开头加入options语句options nodate nonumber;
2)为输出结果加标题:
使用标题语句:格式:title ‘标题内容’; 将本例标题加入程
序中。
该语句是全程语句,有持续性,直到退出SAS。
要取消
标题,只需使用一个空title语句即可(title;)。
6.保存程序文件。
7.对程序修改,将建立的数据集放入个人永久库中。