SAS初阶1

来源:百度文库 编辑:神马文学网 时间:2024/04/28 02:33:21
SAS初阶12007-06-18 23:22

初识SAS

启动

用如下方法可以进入SAS系统的窗口运行环境:

在Win95或NT环境中,从开始菜单的程序文件夹中找到SAS系统文件夹,从中启动SAS 系统。或者生成SAS.EXE的快捷方式(把SAS.EXE用鼠标右键拖到桌面),双击SAS.EXE启动。

在Windows 3.xx环境中找到SAS系统程序组中的SAS图标双击启动。

SAS AWS(SAS应用工作空间)

启动后,出现如图 1的SAS运行界面,术语称为“SAS工作空间(SAS Application WorkSpace )”。它象其它Windows应用程序一样,在一个主窗口内,包含若干个子窗口,并有菜单条、工具栏、状态栏等。

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 - 复制选定文本。

  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 的帮助。

简单运行样例

假设我们有一个班学生的数学成绩和语文成绩,数学满分为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 中用开始菜单中的“程序 | 附件 | 记事本”启动),在记事本中复制输入的程序,然后到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                                      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语句结束。

SAS基本概念

本节介绍一些SAS特有的概念,其中最重要的是数据集。

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数据集有时也称作一张表。在数据库术语中一个观测称作一个记录,一个变量称作一个域。在C9501数据集中有5个观测,分别代表5个学生的情况,而每个学生有5个数据,分别为姓名、性别、数学成绩、语文成绩、平均分,所以此数据集有5个变量。

从上面看出,数据集要有名字,变量要有名字,所以SAS中对 名字(数据集名、变量名、数据库名,等等)有约定:SAS名字由英文字母、数字、下划线组成,第一个字符必须是字母或下划线,名字最多用8个字符,大写字母和小写字母不区分。比如,name,abc,aBC,x1,year12,_NULL_等是合法的名字,且abc和aBC是同一个名字,而class-1(不能有减号)、a bit(不能有空格)、serial#(不能有特殊字符)、Documents (超长)等不是合法的名字。

SAS数据库

SAS数据集是各种特殊格式的 SAS文件中最重要的一种。另一种重要的SAS文件是 SAS目录(Catalog),用来保存各种不能表示成行列结构表格形式的数据,比如系统设置、图象、声音等。多个SAS文件可以放在一起,称为一个 SAS数据库(Library)。数据库有一个库名(Libname),其命名遵循上述SAS名字命名原则。在MS DOS/Windows环境中,一个SAS数据库实际是磁盘上的一个子目录(特殊情况下一个数据库可以由几个子目录组成)。为了把库名和子目录联系起来,使用LIBNAME语句。比如,我们在C:\Y1995子目录中保存了几个SAS数据集,可以用如下语句把库名MYLIB与子目录C:\Y1995 联系起来:

libname mylib "c:\y1995";

有三个预定义的SAS数据库:WORK、SASUSER、SASHELP。其中,WORK数据库叫做 临时库,存放在其中的SAS文件叫 临时文件,这些临时文件当退出SAS系统时会被自动删除。SASUSER库保存与用户个人设置有关的文件,它是永久的,即退出SAS时文件不会被删除。SASHELP库保存与SAS帮助系统、例子有关的文件,是永久的。

从上面看出,SAS文件分为 临时文件永久文件:临时文件在退出SAS系统时自动被删除,永久文件在退出SAS系统时不自动被删除。所以,我们把作为中间结果使用的数据集或练习用的数据集作为临时数据集保存,而需要以后再用的数据集则可以保存为永久数据集。临时数据集和永久数据集的区别是:临时数据集可以用 单水平名,即只有数据集名,比如C9501,而永久数据集名由两部分组成,前一部分是它的库名,后一部分才是数据集名,两部分中间用小数点连接,比如放在MYLIB库(即"C:\Y1995" 子目录)中的数据集TEACH必须用MYLIB.TEACH表示。这样指定的数据集名在生成时可以放到由库名指定的子目录中,在读取时可以到指定的子目录读取,并且不会被自动删除。

临时数据集除用单水平名外 ,也可以用库名为WORK的两水平名,如WORK.C9501和C9501 是一样的。

要生成永久数据集,只要在指定要生成的数据集名时使用两水平名且库名已有定义,比如,要把上面的C9501数据集在生成时就放到"C:\Y1995"子目录中,可以用如下语句:

libname mylib "c:\y1995";            data mylib.c9501;            ……            proc sort data=mylib.c9501;            ……            

这个程序和1.1.3的例子相比只是增加了一个定义库名的LIBNAME语句,然后在所有用到数据集名C9501的地方换成了两水平名MYLIB.C9501。要注意生成的数据集是MYLIB.C9501后面在用到它的时候(在PROC SORT中)也必须使用两水平名MYLIB.C9501而不能使用单水平名C9501 ,这两个名字指向的不是同一个SAS文件。

为了显示现有定义的数据库,只要单击工具栏的 图标,如图 2。

Libraries窗口显示了现有定义的所有数据库及其对应的子目录,并在窗口下方显示了选定的数据库中的SAS文件列表。文件列表第一列是SAS文件名称,第二列是其类型,DATA代表数据集。双击某一数据集名可以打开此数据集到一个数据显示窗口查看。

不需编程的SAS应用――SAS/INSIGHT

介绍

SAS的使用方法一般是象1.1.3那样输入一个程序,运行,修改,最后在输出窗口得到结果。随着图形界面、用户友好等程序思想的发展,SAS也逐渐提供了一些不需要学习SAS编程就能进行数据管理、分析、报表、绘图的功能,其中做得比较出色的一个是SAS/INSIGHT模块。SAS/INSIGHT是在基本的SAS系统基础上添加的一个模块,提供了数据交互输入、数据探索、分布研究、相关分析、各种图形等功能。这里我们初步介绍SAS/INSIGHT的使用。

要启动SAS/INSIGHT,选Globals | Analyze | Interactive data analysis菜单,首先出现图 3那样的选择数据集的窗口:

这是SAS/INSIGHT必须先选择一个要分析、观察的数据集。如果要生成新数据集,按New按钮,如果要打开已有数据集,按Open按钮。图 4是SAS/INSIGHT运行时的样子。

数据窗口

SAS/INSIGHT提供了一个类似于电子表格的数据窗口来管理数据集。图 5为显示了数据集SASUSER.CLASS的数据窗口:

此数据集是一个班19个学生的一些情况,包括姓名、性别、年龄、身高、体重。我们看到,数据窗口标题行显示了打开的数据集的名字,标题行下左上角有一个向右的小三角,这是数据窗口的菜单,见图 6:

三角下方的19是观测行数,右方的5 是变量个数。窗口内每行最左边的方块是观测的绘图标记,用于在图形中标记观测;然后是观测序号;再往右是各变量的值。数据窗口中的各变量用作列标题,如图 5中的NAME、SEX、AGE 、HEIGHT、WEIGHT就是数据集SASUSER.CLASS中的五个变量的名字。在每一个变量名的上面有两个标签,右边一个代表变量的量测水平,分为区间变量(Int)和名义变量(Nom)。区间变量是取连续值的变量,只能为数值;名义变量是取离散值的变量,一般为字符型,也可以取数值。变量名上面左边的标签代表变量在分析中的缺省用途,比如NAME上面的Label表示此变量的值(学生姓名)在绘图中用来标记观测,SEX上面的Group表示此变量(性别)用来分组,等等。

数据窗口可以用来建立新数据集。在SAS/INSIGHT内用“File | New”菜单或在启动INSIGHT 的窗口(图 3)按“New”按钮,将出现一个空的数据窗口。这时,可以直接向第一行输入数据,比如要输入 1.1.3 中的C9501数据集,就可以在第一行的前四列中分别输入李明、男、92 、98,这时各列自动取变量名为A、B、C、D,而且量测水平自动定为前两个字符型是名义变量(Nom),后两个数值型是区间变量(Int)。为了修改变量名和变量的用途,从数据窗口的菜单(图 6)选Define Variables,出现图 7的定义变量窗口:

在这里可以修改变量名,给变量加标签(Label),可以选择变量的量测水平,可以规定变量的用途。变量的标签是对变量的一个可以长达40个字符的描述,可以用于以后的输出,可以用汉字。

定好变量名等属性后就可以继续输入其它数据行,每输入一行后回车,直至把全部数据输完。为了使回车时光标从前一行尾部进到下一行第一格,可以从数据窗口菜单(图 6)中选 “Data Options”,在弹出的对话框中(图 9):

选择回车的方向(Direction of Enter)为左下(Down and Left)。为了保存输入的数据集,选“File | Save | Data”菜单,出现图 8 那样的输入数据集的窗口:

可以选择数据集放在哪一个数据库,可以输入一个数据集名,把这里的A改成c9501,按OK钮就可以保存数据集。对于比较小的数据集(几个、十几个变量,几十个观测),用SAS/INSIGHT的数据窗口可以迅速而直观地输入。对于更大量的数据,一般从其它格式转换而得。

在数据窗口中如果需要修改某一个值,只要直接用鼠标点到其单元格修改,然后把输入光标离开其所在行就实现了修改。在单元格之间移动可以用鼠标单击、制表键、回车、上下光标键等方法。要保存所作的修改还需要用“File | Save | Data”菜单。

当数据窗口中变量较多时,可以用滚动条滚动窗口内容来查看。如果某个变量比较重要,可以考虑把它放到第一列的位置,这只要先单击该变量的名字选中它,然后在图 6的菜单中选Move to First。要把某列移到最后,选中它后用Move to Last菜单。

选中一列只要单击其变量名。如果要选中多个列,在选中一个后按住Ctrl键单击其它的名字可以添加选中其它变量。选中一个变量后按住Shift单击另一个变量名可以选中这两个变量及它们之间的所有变量。选中的多个列也可以用Move to First和Move to Last移动。

要选中一个观测(行),只要单击其观测号(行号)。选多个观测可以用Ctrl单击或Shift 单击的方法。选中的观测也可以用Move to First和Move to Last移动到最前或最后。

还可以选中某些列同时选中某些行。只要在后续的选中操作时用添加选中(Shift单击或Ctrl 单击)即可。用鼠标在数据窗口数值显示部分拖出一个方框也可以选定一部分数值。

选定了列或者行以后,用“Edit | Delete”菜单可以删除选定的列或行。

要取消所有选中,只要单击某一单元格而不是行、列标题即可。

下面简单介绍一下数据窗口菜单(图 6)中各命令:

     

  • Find Next 在选定了若干个观测的情况下,把下一个被选定的观测显示在窗口第一行的位置。

     

     

  • Move to First 把选定的行或列移到最前。

     

     

  • Move to Last 把选定的行或列移到最后。

     

     

  • Sort 在选定了一列的情况下,把数据集按此列从小到大排序;在选定了多列的情况下,按选定的变量次序按这些变量综合排序,比如在SASUSER.CLASS窗口中先选定SEX 然后用Ctrl单击附加选定HEIGHT,然后排序,这样的结果是把数据集先按女、男生排序然后在女生内部和男生内部分别按身高从小到大排序。如果没有选定任何列,则弹出一个菜单,询问按哪些变量排序,比如说对SASUSER.CLASS数据,可以先点SEX,然后单击Y按钮,把性别加入了排序变量中,再选HEIGHT,单击Y按钮,把身高作为第二排序变量,再单击排序变量中的HEIGHT,单击Asc/Des按钮(这是要求对身高值要由高到低排序),按OK后数据将按性别分组,然后女生、男生内部分别按身高由高到低排列。

     

     

  • New Observations 用于快速添加若干个空数据行,弹出一个对话框要求输入添加的观测数,缺省是100个。添加的空行中字符型数据先填空值,数值型数据先填缺失值(用单独的小数点代表)。

     

     

  • New Variables 用于快速添加若干个新变量。

     

     

  • Define Variables 设定变量的名字、标签、量测水平、缺省分析用途等,见图 7。可以在生成新数据集时定义变量,也可以对已有数据集的变量属性进行修改。

     

     

  • Fill Values 用于自动生成一个等差数列变量。先选定一个数值型变量,然后用此命令,将弹出一个对话框要求输入起始值(Value)和增量(Increment),比如起始值填100 ,增量填50,则此变量的在各观测中的值分别填入为100,150,200,…。

     

     

  • Extract 这是一个很强的功能,它可以把选定的部分行、部分列或者部分行列取出到另一个窗口。比如,在SASUSER.CLASS中先选定所有女生的观测,再用添加选择(Shift 或Ctrl单击)的办法选定NAME和HEIGHT变量,然后用此命令,可以打开一个SASUSER.CLASS1 数据窗口,此数据窗口中只有姓名和身高两列和女生的观测行。可以用主菜单中的“File | Save | Data ”把此新数据集保存为WORK.CLASS1(尽量不用永久数据集存放练习用的数据集)。这样可以由已有数据集挑选部分列、部分行组成新数据集。

     

     

  • Data Options 本数据窗口的一些设置。弹出对话框如图 9,可以选择在数据窗口内按回车时光标是移到下面、左面还是下面最左,按TAB是光标是移到下面、右面还是右上。选中“Show Variable Labels”可以用变量的标签作为窗口的列标题,这样有利于理解变量的意义,但无法知道变量的真实名字。前面说过,变量标签允许长达40个字符,允许用汉字。标签可以在数据窗口菜单的Define Variables窗口(图 7)输入或修改。如果要用较长的汉字标签,需要适当地用空格分开标签中的汉字以利于分行显示标签。

类别:计算机知识 | 添加到搜藏 | 浏览(87) | 评论 (0) 上一篇:初识SAS    下一篇:SAS初阶2