1
第
1
章
SAS
初阶
§
1.1
初识
SAS
1.1.1
启动
用如下方法可以进入 SAS 系统的窗口运行环境:
在 Win95 或 NT 环境中,从开始菜单的程序文件夹中找到 SAS 系统文件夹,从中启动
SAS 系统。或者生成 SAS.EXE 的快捷方式(把 SAS.EXE 用鼠标右键拖到桌面),双击
SAS.EXE 启动。
在 Windows 3.xx 环境中找到 SAS 系统程序组中的 SAS 图标双击启动。
1.1.2 SAS AWS
(
SAS
应用工作空间)
启动后,出现如图 1的 SAS 运行界面,术语称为“SAS 工作空间(SAS Application
WorkSpace)”。它象其它 Windows 应用程序一样,在一个主窗口内,包含若干个子窗口,并
图 1 SAS AWS
2
有菜单条、工具栏、状态栏等。
SAS 有三个最重要的子窗口:程序窗口( PROGRAM EDITOR)、运行记录窗口( LOG)、
输出窗口(OUTPUT)。
程序窗口的使用类似于 Windows 中的记事本程序,可以在其中编辑文本文件,主要是
编辑 SAS 程序。程序可以直接在窗口中键入,插入新行用回车,插入点光标(闪动的竖线)
可以用光标键(上下左右箭头、Home、End)移动或用鼠标单击到某一处。按住 Shift 再按
光标键可以加亮显示一块文本,然后用复制、剪切、粘贴命令(Edit 菜单中的 Cut、Copy、
Paste,或工具栏图标)可以复制或移动加亮显示的文本。这些编辑操作具体请参考 Windows
的有关文档。
运行记录窗口记录程序的运行情况,运行是成功还是出错,运行所用时间,如果出错,
错在什么地方。运行记录窗口中以红色显示的是错误信息。
输出窗口显示 SAS 程序的文本型输出(图形输出单独有一个 GRAPHICS 窗口)。输出
分页显示。
要把光标移动到某一窗口,可以用主菜单中的 Window 菜单选择要显示的窗口。用功能
键 F5 可以切换到程序窗口,F6 可以到运行记录窗口,F7 可以到输出窗口。
SAS 主窗口标题栏下是主菜单。SAS 菜单是动态的,其内容随上下文而不同,即光标
在不同窗口其菜单也不同。其中,File(文件)菜单主要是有关 SAS 文件调入、保存及打印
的功能。Edit(编辑)菜单用于窗口的编辑(如清空、复制、剪切、粘贴、查找、替换)。
Locals(局部)菜单与当前正在进行的操作有关,如果你正在程序窗口中编辑程序,则 Locals
菜单有提交运行、调回修改等项,如果在运行记录窗口或输出窗口则 Locals 菜单项根本不
出现。Globals 菜单内容比较复杂,它可以打开被关闭的程序窗口、运行记录窗口、输出窗
口、图形窗口,可以进入 SAS 提供的各个独立模块。主菜单下是一个命令条和工具栏菜单。
命令条主要是用于与 SAS 较早版本的兼容性,可以在这里键入 SAS 的显示管理命令。工具
栏图标提供了常见任务的快捷方式,比如保存、打印、帮助等等。鼠标光标在某一工具栏图
标上停留几秒可以显示一个说明。工具栏图标的解释如下:
Submit - 提交编辑窗口中的程序
New - 清空编辑窗口
Open - 打开文件到编辑窗口。用户指定一个文件调入到编辑窗口内。这个文件从此与编
辑窗口相关联,以后的存盘操作将自动存入这个文件。
Save - 存盘,保存编辑窗口内容,注意如果此窗口已经与一个文件相联系的话此功能将覆
盖文件的原有内容而不提示。
Print - 打印当前窗口内容
Print preview -打印预览。
Cut - 剪切选定文本。
Copy - 复制选定文本。
3
Paste - 粘贴。注意这些操作是对 Windows 剪贴板进行的,可以用来与其它Windows 应用
程序交换文本、数据等。剪切或复制到剪贴板的内容可以被其它应用程序粘贴,其它应用程序放
到剪贴板的内容也可以粘贴到SAS的编辑窗口中。
Undo - 撤销刚才的编辑操作。
DOS prompt - 临时进入DOS。
Browse - 打开WWW 浏览器并进入SAS 公司的主页www.sas.com。
Directories - 进入Directory(目录)窗口,可以浏览各 SAS 目录的内容,可以浏览目录中
的数据集、SAS 目录的内容。
SAS/ASSIST - 启动SAS的菜单驱动界面SAS/ASSIST。
Help - 启动 Windows 的帮助系统进入 SAS 的帮助。
1.1.3
简单运行样例
假设我们有一个班学生的数学成绩和语文成绩,数学满分为 100,语文满分为 120,希
望计算学生的平均分数(按百分制)并按此排名,可以在程序窗口输入此程序:
title '95 级 1 班学生成绩排名';
data c9501;
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=c9501;
by descending avg;
run;
proc print;run;
实际上,输入这样包含中文的程序最好办法不是在 SAS 程序窗口直接输入,因为 SAS 目前
对中文输入的处理还不够完善,好的办法是打开一个其它的编辑程序如 Windows 中的记事
本(在 Win95 中用开始菜单中的“程序 | 附件 | 记事本”启动),在记事本中复制输入的
4
程序,然后到 SAS 系统程序窗口中使用粘贴命令(用 Edit 菜单的 Paste 或工具栏上的粘贴
图标),把程序复制到 SAS 中。也可以在记事本中把编好的程序存盘,然后在 SAS 程序窗
口用 File 菜单的 Open 命令打开保存好的程序文件。
要运行此程序,只要用鼠标单击工具栏的提交图标 ,或用 Locals 菜单的 Submit 命令。
运行后,运行记录窗口出现如下内容:
50 title '95 级 1 班学生成绩排名';
51 data c9501;
52 input name $ 1-10 sex $ math chinese;
53 avg = math*0.5 + chinese/120*100*0.5;
54 cards;
NOTE: The data set WORK.C9501 has 5 observations and 5 variables.
NOTE: The DATA statement used 0.11 seconds.
60 ;
61 run;
62 proc print;run;
NOTE: The PROCEDURE PRINT used 0.0 seconds.
63 proc sort data=c9501;
64 by descending avg;
65 run;
NOTE: The data set WORK.C9501 has 5 observations and 5 variables.
NOTE: The PROCEDURE SORT used 0.05 seconds.
66 proc print;run;
NOTE: The PROCEDURE PRINT used 0.0 seconds.
其中记录了每段程序的运行情况、所用时间、生成数据保存情况。如果有错误还会用红色指
示错误。比如,最后的 proc print 后面的分号如果丢失,记录窗口显示如下错误:
67 proc printrun;
--------
181
ERROR 181-322: Procedure name misspelled.
错误说明为过程名错拼,但实际上是丢了分号导致 print 和 run 连成了一个词。在程序窗口
用“Locals | Recall text”菜单或按 F4 功能键可以调回程序修改。正确运行后输出窗口出现
如下结果:
95 级 1 班学生成绩排名 3
5
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
95 级 1 班学生成绩排名 4
OBS NAME SEX MATH CHINESE AVG
1 张聪 男 98 109 94.4167
2 张红艺 女 89 106 88.6667
3 李明 男 92 98 86.8333
4 刘颍 女 80 110 85.8333
5 王思明 男 86 90 80.5000
这里有两页输出,第一页是输入数据后用 PROC PRINT 显示的数据集,第二页为按平均分
排名后的结果。
从上面的例子程序可以看出 SAS 程序的一些特点。SAS 程序由
语句
组成,语句用分号
结束。SAS 程序中大小写一般不区分(字符串中要区分大小写)。 SAS 程序中的空格、空行
一般可以任意放置,这样我们可以安排适当的缩进格式使得源程序结构清楚易读。SAS 程
序由两种“步”构成,一种叫
数据步
(data step),一种叫
过程步
(proc step),分别以 DATA
语句和 PROC 语句开始。数据步和过程步由若干个语句组成,一般以 RUN 语句结束。
§
1.2
SAS
基本概念
本节介绍一些 SAS 特有的概念,其中最重要的是数据集。
1.2.1 SAS
数据集。
SAS
数据集
(SAS Datasets)可以看作由若干行和若干列组成的表格,类似于一个矩阵,
但各列可以取不同的类型值,比如整数值、浮点值、时间值、字符串、货币值等等。SAS
数据集存放在以特殊格式存放的二进制文件中,我们用一个 SAS 中的逻辑名来使用 SAS 数
据集而不需关心它到底如何存储在磁盘上。比如,1.1.3的例子生成了一个名为 C9501 的数
据集,它的逻辑形式如下表:
NAME SEX MATH CHINESE AVG
李明 男
92 98 86.8333
张红艺 女
89 106 88.6667
王思明 男
86 90 80.5000
张聪 男
98 109 94.4167
刘颍 女
80 110 85.8333
数据集的每一行叫做一个观测(Observation),每列叫做一个变量(Variable)。 SAS 数据集
等价于关系数据库系统中的一个表,实际上一个 SAS 数据集有时也称作一张表。在数据库