编辑: ACcyL | 2019-12-07 |
一、概述 SAS系统全称为Statistics Analysis System,最早由北卡罗来纳大学的两位生物统计学研究生编制,并于1976年成立了SAS软件研究所,正式推出了SAS软件.
SAS是用于决策支持的大型集成信息系统,但该软件系统最早的功能限于统计分析,至今,统计分析功能也仍是它的重要组成部分和核心功能.SAS现在的版本为9.0版,大小约为1G.经过多年的发展,SAS已被全世界120多个国家和地区的近 三万家机构所采用,直接用户则超过三百万人,遍及金融、医药卫生、生产、运输、通讯、政府和教育科研等领域.在英美等国,能熟练使用SAS进行统计分析是许多公司和科研机构选材的条件之一.在数据处理和统计分析领域,SAS系统被誉为国际上的标准软件系统,并在96~97年度被评选为建立数据库的首选产品.堪称统计软件界的巨无霸.在此仅举一例如下:在以苛刻严格著称于世的美国FDA新药审批程序中,新药试验结果的统计分析规定只能用SAS进行,其他软件的计算结果一律无效!哪怕只是简单的均数和标准差也不行!由此可见SAS的权威地位. SAS系统是一个组合软件系统,它由多个功能模块组合而成,其基本部分是BASE SAS模块.BASE SAS模块是SAS系统的核心,承担着主要的数据管理任务,并管理用户使用环境,进行用户语言的处理,调用其他SAS模块和产品.也就是说,SAS系统的运行,首先必须启动BASE SAS模块,它除了本身所具有数据管理、程序设计及描述统计计算功能以外,还是SAS系统的中央调度室.它除可单独存在外,也可与其他产品或模块共同构成一个完整的系统.各模块的安装及更新都可通过其安装程序非常方便地进行. SAS系统具有灵活的功能扩展接口和强大的功能模块,在BASE SAS的基础上,还可以增加如下不同的模块而增加不同的功能:SAS/STAT(统计分析模块)、SAS/GRAPH(绘图模块)、SAS/QC(质量控制模块)、SAS/ETS(经济计量学和时间序列分析模块)、SAS/OR(运筹学模块)、SAS/IML(交互式矩阵程序设计语言模块)、SAS/FSP(快速数据处理的交互式菜单系统模块)、SAS/AF(交互式全屏幕软件应用系统模块)等等.SAS有一个智能型绘图系统,不仅能绘各种统计图,还能绘出地图.SAS提供多个统计过程,每个过程均含有极丰富的任选项.用户还可以通过对数据集的一连串加工,实现更为复杂的统计分析.此外,SAS还提供了各类概率分析函数、分位数函数、样本统计函数和随机数生成函数,使用户能方便地实现特殊统计要求.
二、初识SAS 安装SAS哪位要是连软件的安装和打开都要我碌幕,我劝您还是买一套洪恩的《开天辟地》好好热热身吧.不过,安装SAS时,应首先将系统时间改到2002年以前,安装完以后,再crack,然后将时间修改还原,切记! 启动SAS 启动后,出现如图 的SAS运行界面,术语称为 SAS工作空间(SAS Application WorkSpace) .它象其它Windows应用程序一样,在一个主窗口内,包含若干个子窗口,并有菜单条、工具栏、状态栏等. SAS有三个最重要的子窗口:程序窗口(PROGRAM EDITOR)、运行记录窗口(LOG)、输出窗口(OUTPUT). Program Editor的窗口(窗口标签为Editor)就是用来输入SAS语句的,编程操作的所有内容都是在该窗口内完成的,各位还是要跟它先多熟悉一下. 简单运行样例 假设我们有一个班学生的数学成绩和语文成绩,数学满分为100,语文满分为120,希望计算学生的平均分数(按百分制)并按此排名,可以在程序窗口输入此程序: title '
0401班学生成绩排名'
;
data c0401;
input name $ 1-10 sex $ math chinese;
avg = math*0.5 + chinese/120*100*0.5;
cards;
李明 男92
98 张红艺 女89
106 王思明 男86
90 张聪 男98
109 刘颍 女80
110 ;
run;
proc print;
run;
proc sort data=c0401;
by descending avg;
run;
proc print;
run;
实际上,上述程序是文本,完全可以在任何文本编辑工具中输入,比如Windows中的记事本,甚至Word也可用来输入这样包含中文的程序.输入后使用复制复制、粘贴命令将输入的程序粘贴到SAS系统程序窗口.(即在记事本中复制输入的程序,然后在SAS系统程序窗口中使用粘贴命令,把程序复制到SAS中). 要运行此程序,只要用鼠标单击工具栏的提交(Submit)图标 ,或用Run菜单下的Submit命令,或者直接按下F8键,就可运行程序.如果选中某一段程序,然后进行调用,则系统只执行被选中的部分. 运行后,输出窗口出现如下结果:0401班学生成绩排名1 11:40 Saturday, November 10,
2004 Obs name sex math chinese avg
1 李明 男92
98 86.8333
2 张红艺 女89
106 88.6667
3 王思明 男86
90 80.5000
4 张聪 男98
109 94.4167
5 刘颍 女80
110 85.8333运行记录窗口则记录每段程序的运行情况、所用时间、生成数据保存情况.如果有错误还会用红色指示错误.
三、SAS程序的使用常识 从上面的例子程序可以看出SAS程序的一些特点.SAS程序的基本结构 SAS程序由语句组成,语句用分号结束.语句一般由特定的关键词开始,语句中可包含变量名、运算符等,它们以空格分隔.SAS对语句所占的行数无限制,一个语句可占多行,同样,多个语句也可占一行. SAS程序的程序组成 SAS程序可以非常复杂,但其基本结构一般由数个完成单个动作的程序步和环境设置语句构成.而程序步分为两种,一种叫数据步(data step),一种叫过程步(proc step),分别以DATA语句和PROC语句开始.数据步和过程步由若干个语句组成,一般以RUN语句结束.前者用来创建和修改用于统计分析的数据集,后者则利用已创建的数据集完成特定的统计分析任务.比如下面的例子: libname a '
d:sysdata'
;
data a.aaaa;
input x @@;
cards;
1 2
3 4 5;
proc print;
var x;
run;
quit;
第1句就是一个环境设置语句,其作用是设定一个逻辑库,逻辑库名称为a,第2~6句构成数据步,其功能是新建一个数据集,数据集名称为aaaa,并且输入数据,第7~9句构成过程步,其功能是将数据集aaaa中变量x的数值在output窗口中输出. SAS程序的书写规则与程序注释 前面已经提到,SAS对程序的书写格式比较灵活,大小写一般不区分(字符串中要区分大小写),但我们仍提倡SAS程序与其它编程语言相似,采用缩进格式,使得源程序结构清楚,容易读懂. SAS程序的程序注释有以下两种格式: 注释语句:以星号 * 开始,可占多行,以分号 ;
结束.~ 注释段落:用 /* 和 */ 包括起来的任何字符,可占多行. 同样,我们提倡在程序中要有适当的注释,使程序的可读性强.
四、SAS程序的数据步 数据集(dataset)和库 ???SAS数据集(SAS Datasets)可以看作由若干行和若干列组成的表格,类似于一个矩阵,但各列可以取不同的类型值,比如整数值、浮点值、时间值、字符串、货币值等等.比如,前面的例子生成了一个名为C0401的数据集,它的逻辑形式如下表: 85.8333
110 80 女 刘颍 94.4167
109 98 男 张聪 80.5000
90 86 男 王思明 88.6667
106 89 女 张红艺 86.8333
98 92 男 李明 AVG CHINESE MATH SEX NAME 表1 数据集的逻辑形式 数据集的每一行叫做一个观测(Observation),每列叫做一个变量(Variable).SAS数据集等价于关系数据库系统中的一个表,实际上一个SAS数据集有时也称作一个表.在数据库术语中一个观测称作一个记录,一个变量称作一个域.在C0401数据集中有5个观测,分别代表5个学生的情况,而每个学生有5个数据,分别为姓名、性别、数学成绩、语文成绩、平均分,所以此数据集有5个变量,变量名依次为NAME、SEX、MATH、CHINESE和AVG. 从上面看出,数据集要有名字,变量要有名字,所以SAS中对名字(数据集名、变量名、数据库名,等等)有约定:SAS名字由英文字母、数字、下划线组成,第一个字符必须是字母或下划线,名字最多用8个字符,大写字母和小写字母不区分.比如,name,abc,aBC,x1,year12,_NULL_等是合法的名字,且abc和aBC是同一个名字,而class-1(不能有减号)、a bit(不能有空格)、serial#(不能有特殊字符)、Documents (超长)等不是合法的名字. 逻辑库 SAS系统将所使用的文件以库的形式组织起来,而数据集则存放在一个库中,这个库就称为逻辑库.前面见到过的libname命令就用于指定库标记.其一般格式为: Libname 库名称 '
文件夹位置'
选项;
例如libname a '
d:sysdata'
;
data a.aaaa;
input x @@;
cards;
1 2
3 4 5;
proc print;
var x;
run;
quit;
第一行就指定d:sysdata为逻辑库位置,其名称为a. 引用在逻辑库中数据集时要使用两级名称来指定,第一级为库名称,第二级为数据集名,中间用句点 . 隔开.即用 库名........