同济大学应用数学系 第四章 SAS软件的深入应用 统计计算
第四章 SAS软件的深入应用
第一节 SAS编程概念简介
一、SAS程序的运行
我们用例子来说明在SAS显示管理系统内是如何进行程序运算的。
若要将一个外部数据文件转换成SAS数据集,首先在Editor窗口内编辑程序:
data class;
infile 'c:\\sas\\class.txt';
input name $ group $ birthday height weight english math; run;
然后在菜单栏内按SUBMIT命令(或按F3)键,或在Run选项菜单内选择submit,将程序提交给SAS系统处理。这时,LOG窗口显示出数据集建立成功及执行时有关的信息,包括错误和警告信息。要想在屏幕上查看数据,双击Explorer窗口中的Work子目录,再双击class数据集图标。
按F3提交程序以后,假如没有错误,OUTPUT窗口自动输出PROCPRINT过程步运行结果。在这儿注意,一旦数据建立以后,就不必再提交DATA步了。例如你还可再次提交PROC步,产生一个表格:
proc tabulate;
class group; table group;
run;
LOG窗口累计显示历次执行程序的信息,在OUTPUT窗口内显示出PROC TABULATE步产生的表格。执行END命令(或按F3键)回到Editor窗口。
在命令行执行MANAGER命令可以管理OUTPUT窗口的内容,在OUTPUT MANAGER窗口中有下列字命令可供选择:
S 查看所选的页。(该命令还可以用在其他窗口,例LIB,VAR等。) E 编辑所选的页。 P 打印所选的页。 D,V 删除所选的页。
F 将所选的页存到一个文件中去。
如果出现错误信息,用RECALL命令(或按F4键)调回刚提交的程序进行修改。它的一般格式为: RECALL RECALL n
n为调回最近n次提交的所有程序。 例如:在命令行输入 RECALL 3
回车以后,把三次提交的程序一起调回PGM内。RECALL命令还可以用快捷键F4或在LOCALS选项菜单内选择RECALL。在显示管理系统内还有其他的常用的命令: -
ZOOM 改变窗口的大小,也可用鼠标点一下窗口的右上方的图标。
1-1
同济大学应用数学系 第四章 SAS软件的深入应用 统计计算
CLEAR 清除窗口内的内容,也可在EDIT选项内选择Clear text项。
FILE 将PGM内的内容存入一个文件中去;也可在FILE选项内选择Save as项。 INCLUDE 将外部文件拷贝到Editor窗口,也可在FILE选项内选择Open项。 二、SAS程序
SAS程序是由用户向SAS管理器提交的要运行的一系列的过程步组成。SAS管理器再调用SAS系统合适的部分来完成程序中所定义的任务。SAS程序有两种类型的步组成。通常用来建立SAS数据集的被称为数据步。它是以DATA语句开头,以RUN语句结尾。另一种通常用来分析并处理SAS数据集,生成所需的信息,称为过程步。它是以PROC语句开头,以RUN语句结尾。当有多个数据步或过程步混在一起提交给SAS处理器处理时,DATA语句或PROC语句起到前一步的RUN语句的作用,故两步之间的RUN常可省略,但最后一步必须以RUN语句结束。程序中出现的每一个步都是独立的,彼此不能交叉,不能嵌套。 在SAS程序中每个步由一个或多个语句组成。SAS语句一般由SAS系统能识别的关键字开头,总是用分号“;”结尾。SAS语句是自由格式的,能够在任何位置开始或结尾,一条语句可以连续在一行上,几条语句可以在一行上。 三、SAS数据集
许多SAS过程和一些数据步语句处理的数据必须是SAS数据集的形式。SAS数据集是由两部分组成。一为描述性部分,包含有数据集的一般信息,例数据集名,建立数据集的时间,观察值的数目等存储信息。还包含有数据集中变量的属性,例如变量名,变量的类型,长度,输入输出格式,标记,位置等。另一个为数据值部分,它被安排成矩形状表格。每一列与数据字段相对应的是变量,变量有字符型和数值型两种变量。表格中的每一行为观察值,它对应于一行数据的记录。缺失的数值型变量值用“.”表示,缺失的字符型变量值用空格显示。
对SAS数据集名及变量命名的规则是相同的。名字的字符长度为1个~8个,必须用字母或下划线开头,中间可用任何字母、数字及下划线。
所有的数据集都有两级名字,并用句号“.”隔开。第一级为库逻辑名,它为数据集库存放的物理位置的别名,它也确定了文件是临时性的还是永久性的。SAS文件名一般的形式为:
libref.SAS-filename libref 为库逻辑名。
SAS-filename 为数据库内具体涉及到的SAS文件名。
libref缺省时,SAS系统就采用WORK库名,这数据集为临时性的,当退出SAS系统后,WORK库内的文件将消失。如果要建立永久性的文件,就必须指定一个除了WORK以外的名。SAS系统有一个永远存在的库,其名为SASUSER。假如想将文件放在你指定的位置内,可以使用LIBNAME语句。它的一般形式为:
LIBNAME libref ‘d: path’;
例:LIBNAME abc 'c:\\sas';
在提交以后即建立了库名为ABC的数据库。其物理位置在C盘ABC目录内。假如要删除定义过的库名,可使用CLEAR选项: LIBNAME abc CLEAR; 四、SAS系统的日期
SAS系统的日期值,是以1960年1月1日至读入日期之间的天数表示的,在1960年
1-2
同济大学应用数学系 第四章 SAS软件的深入应用 统计计算
以前用负数表示。日期时间常量是用单引号括起日期值,后面接一个D(DATE)、T(TIME)或DT(DATETIME)来表示其类型。例:
'17oct91'D 11612(天) '2:45:32P'T 53132(秒) '17OCT91:14:45'DT 1003329900(秒)
SAS系统日期若没有定义输入输出格式,将按SAS日期值读取或输出。 五、SAS函数
SAS函数是一个已编好的程序,它对一个或多个自变量计算以后,返回一个确定的值。一般格式为:
function—name(argumentl,argument2,?)
每个自变量之间用逗号分隔,大多数函数可接受的自变量为常量、变量、表达式、函数。例: SUM(argumentl,argument2,?) 计算自变量和。
UPCASE(argument) 将自变量转换成大写的字符串。 MDY(month,day,year) 转换成SAS日期。
YEAR(SAS-date) 将SAS日期返回到四位数的年份值。 QTR(SAS-date) 将SAS日期返回到数值为1~4的季度值。 MONTH(SAS-date) 将SAS日期返回到数值为1~12的月份值。 WEEKDAY(SAS-date) 将SAS日期返回到数值为1~7的星期值,1
代表星期日,2代表星期一,? 还有其他函数可查HELP:将光标移到HELP以后选择SAS SYSTEM HELPS,再选索引,输入function查看。 六、SAS表达式
SAS表达式由一系列运算数和操作符构成,运算数可以是变量名或常数,操作符有: (1)算术操作符
+ 加;一 减;* 乘;/ 除;** 乘方。
对一个算术操作符的运算数若为缺失值,结果也为缺失值。 (2)比较操作符
=或EQ 等于;^=或NE 不等于;>或GT 大于;
>=或GE 大于等于;<或LT 小于;<=或LE 小于等于。 IN(argumentl,argument2?) 等于列表中的某一项值。
例:X+3 1N (5,Y* 2,7)表示如果Y=6时,X=2、9、4时表达式为真;X为其他值时表达式为假。
(3)逻辑操作符 ,
&(AND) 与;| (OR) 或;^(NOT) 非。
1-3
同济大学应用数学系 第四章 SAS软件的深入应用 统计计算
(4)其他
<> 取大值;>< 取小值;|| 字符串连接。 操作符的优先级:
最高级 ** 乘方;^(NOT) 非;+、- 正、负号 第一级 <>、>< 取最大、最小 第二级 *、/ 乘、除 第三级 +、- 加、减 第四级 || 字符串连接
第五级 <、<=、^=、>=、>、=、^>、^< 第六级 &(and) 与 第七级 | (or) 或
第二节 用DATA步建立SAS数据集
要对数据进行分析,首先需将数据建立成SAS数据集,以便供PROC过程步进行处理。通常我们采用DATA步来建立和修改SAS数据集。
一、DATA步的流程
当你把写好的程序提交以后,SAS系统是分两个阶段编译程序和执行程序来执行DATA步的。在编译时,首先建立一个外部文件的数据记录的输入寄存器,然后建立当前观测值的程序数据矢量(PDV),再从PDV存储的信息中建立起数据集的描述部分。在执行阶段中,每次执行DATA步时,先将PDV中变量进行初始化,并赋予缺失值。然后执行读语句及其他语句,将PDV中的值写到SAS数据集去,程序再回到步的顶部,直到结尾。其流程图如下:
当数据发生错误时,SAS系统将对变量分配一个缺失值。在LOG窗口给出程序执行的信息。在处理每个DATA步时,SAS系统自动建立两个变量,_N_和_ERROR_,并放在PDV内。
_N_ 是DATA步执行的次数。
_ERROR_ 是执行DATA步时数据发生错误的信息。
当遇到数据错误时,_ERROR_=1。
没有数据错误时,_ERROR_=0。 ’
这些自动变量可在编程中使用,但不写到SAS数据集内,这两个变量在编程中是很有用的。
二、建立数据集使用的基本语句
1-4
相关推荐: