SAS统计(网) 下载本文

此时变量描述窗口如下图所示:

⑧ 变量的选择告一段落,现在开始选择所需要的统计量。变量描述窗口的下方为一些复选框,右侧为复选框名,左侧为复选框的状态。以SUM复选框为例,用鼠标单击SUM左侧的小方框,此时该方框内打勾,表示该项被选择;再点一下则复选框恢复原状态。如此选择所需的全部统计量,最后变量描述窗口的状态如下图所示:

⑨ 现在是最后一步――运行程序了,选择下拉菜单Locals--> Run,则系统开始执行程序,最后OUTPUT视窗自动弹出,显示最终的运行结果。

可能有的同学觉得奇怪,为什么我总是说系统在执行程序,刚才没有写程序啊?!事实上,SAS/ASSIST视窗是一个程序自动产生器,我们所做的每一个选择都被写成了程序,最后系统执行这个自动产生的程序来向我们交差。如果想看所产生的程序,则选择下拉菜单Locals View--> Sourse。以刚才的选择为例,系统产生的程序其主要部分如下:

proc means data=SASUSER.CLASS vardef=DF MIN MAX RANGE SUM MEAN VAR STD STDERR CV ; var AGE HEIGHT WEIGHT ;

5

class SEX ; ; run;

通过这个例子,我们掌握了使用SAS/ASSIST视窗时将会碰到的窗口界面的用法。为了使大家在学习SAS时能打下较坚实的基础,本书仍然以讲述SAS语言为主线。但是在例题的解中,我们将尽可能给出程序和ASSIST视窗两种操作方法。同学们可根据具体情况自行选择使用哪种解法

第三章 SAS程序初步

从本质上讲,SAS是一种完善的第四代计算机语言。因此要真正掌握它,我们仍然要抛开其华丽的外表,从学习它的核心――SAS程序开始。

现在,让我们将SAS看成一个计算能力极强的统计学白痴(之所以这样说,是因为它计算能力虽然极强,却只能帮你计算而不能提出自己的实验设计方案或研究方向来),而你有一个非常小的关于数据分析的问题要请它帮忙。自然你要开口提出请求,无论措辞是委婉动听还是直截了当,你的大实话无非是“喂,老兄,我有这样一些数据,我想做这样一种统计分析,您能帮我吗?”。他迅速检查您的要求,在认为合情、合理并且合法后,就开始进行计算,并且在很短的时间内给出计算结果。

好的,计算机语言就是我们和计算机对话时所用的语言。和以上人类对话的例子相对照,“我有这样一些数据”对应SAS程序中的数据步;而“我想做这样一些统计处理”对应SAS程序中的程序步;最后的那一句哀求“您能帮我吗”则对应了Submit命令。在默认情况下,运行结果或者出错信息将自动给出(当然你也可以强制不让它输出)。此外,还有一些系统环境控制语句,如Libname、title等。SAS程序就是由一个或多个数据步和/或程序步加上一些乱七八糟的环境控制语句组成。在本章中,我们将首先学习SAS对数据的管理方式,然后会了解到什么是数据步和程序步,最后则介绍一下SAS语言中结构化语句的语法。

§3.1 SAS系统对数据的管理

在SAS系统中只有SAS数据集才能被SAS过程直接调用,SAS数据集的结构和DBF数据库完全相同,因此无须多讲。而SAS数据集存储在被称为SAS数据库的文件集中,在PC系统中,SAS数据库与某一个文件夹相对应,我们要为每一个数据库指定一个库标记(库名)来识别该库,使用Libname命令可以指定库标记。它的一般格式如下:

Libname 库标记 ’文件夹位置’ 选项;

例如要指定目录“C:\\USER”为库标记A,可以在视窗中提交如下语句:

6

libname a ’c:\%user’;

数据库可分为永久库和临时库两种。临时库只有1个,名为WORK,它在每次启动SAS系统后自动生成,关闭SAS时库中的数据集被自动删除;永久库可有多个,用户可以使用Libname语句指定永久库的库标记,永久库中的所有文件都将被保留。但库标记仍是临时的,每次启动SAS系统后都要重新指定。不过为了方便用户,SAS在每次启动时都会自动指定两个库标记:

? ?

SASUSER:指明为永久库,即库中的数据集被保存起来,以便下次启动系统时使用。 WORK:指明为临时库,对于开发和检查新程序非常有用,但每次SAS运行结束后WORK库中的所有文件将被删除。在程序中引用该库中的数据集可以省略库标记,即它被认为是缺省的数据库。

SAS数据库对应文件夹,如SASUSER对应c:\\sas\\sasuser,WORK对应c:\\sas\\saswork, SAS数据集则对应文件,每个数据集实际上是在硬盘的相应文件夹内产生一个文件名为数据集名,而扩展名为.sd2的文件,因此如果你成功的建立了一个数据集,理论上你就可以反复使用它直到硬盘报废。

每一个数据集都有一个两级名,第一级是库标记,第二级是数据集名,中间用“.”隔开,在程序中通过指定两级名来识别文件。文件两级名的一般形式如下:

库标记.数据集名

如在a库中的数据集abc可以这样来引用:a.abc 。

§3.2 SAS程序的数据步

3.2.1 预备知识

SAS程序的语句从上一个语句结束处开始,以一个分号结束,可占多行。 3.2.2 数据步

以DATA语句开始,用于创建和处理数据集。其中最常用的语句有:

?

DATA语句 它的主要功能是:

o 标志数据步的开始。 o 命名将要创建的SAS数据集。

DATA语句的一般形式如下:

DATA 数据集名;

7

?

INFILE语句 用于从外部文件读入数据,必须出现在INPUT语句之前。它的主要功能是:

o 确定一个包含原始数据的外部文本文件。

INFILE语句的格式如下:

INFILE ’外部文件的所在位置及名称’ 选项;

?

CARDS语句 用于直接输入数据,标志着数据块的开始。格式如下:

CARDS; 数据块 ;

?

INPUT语句 用于向系统表明如何读入每一条记录。它的主要功能有:

o 读入由语句指定的数据列。 o 为相应的数据域定义变量名。 o 确定变量的读入模式。

INPUT语句的格式如下:

INPUT 变量名 [变量类型 起止列数]...;

方括号表示其中的内容为可选,如果不输入,系统会以默认值代替。 3.2.3 数据的两种输入方式

上面我们学到了INFILE语句和CARDS语句,它们分别对应了两种数据输入的方式:

【直接输入方式】

实际上我们在第一章已经用到了直接输入方式,仍以那个程序为例,其中的数据步如下:

data temp; input x y@@; cards; ; 命名将要建立的数据集为work.temp 要输入的变量为x、y,并且连续输入 直接输入数据,数据块开始 数据块结束 34 56 78 90 35 67 89 10 23 65 77 45 数据块 变量y后面的@@表示数据可以在一行里连续读入,SAS默认按列来分隔变量,可是这里只有两个变量,输成两列数据太长,因此加上两个@@,SAS见到这个符号,

8