第2章SAS语言与数据管理SAS系统强大的数据管理能力

上传人:平*** 文档编号:17094118 上传时间:2017-11-10 格式:DOC 页数:27 大小:103.49KB
返回 下载 相关 举报
第2章SAS语言与数据管理SAS系统强大的数据管理能力_第1页
第1页 / 共27页
第2章SAS语言与数据管理SAS系统强大的数据管理能力_第2页
第2页 / 共27页
第2章SAS语言与数据管理SAS系统强大的数据管理能力_第3页
第3页 / 共27页
第2章SAS语言与数据管理SAS系统强大的数据管理能力_第4页
第4页 / 共27页
第2章SAS语言与数据管理SAS系统强大的数据管理能力_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第2章SAS语言与数据管理SAS系统强大的数据管理能力》由会员分享,可在线阅读,更多相关《第2章SAS语言与数据管理SAS系统强大的数据管理能力(27页珍藏版)》请在金锄头文库上搜索。

1、第 2 章 SAS 语言与数据管理 SAS 系统强大的数据管理能力、计算能力、分析能力依赖于作为其基础的 SAS 语言。 SAS 语言是一个专用的数据管理与分析语言,它的数据管理功能类似于数据库语言(如 FoxPro) ,但又添加了一般高级程序设计语言的许多成分(如分支、循环、数组) ,以及专用 于数据管理、统计计算的函数。SAS 系统的数据管理、报表、图形、统计分析等功能都可 以用 SAS 语言程序来调用,只要指定要完成的任务就可以由 SAS 系统按照预先设计好的程 序去进行,所以 SAS 语言和 FoxPro 等一样是一种第四代语言。 本章简单介绍 SAS 语言的基本成分与规则, SAS

2、语言如何用来管理数据,SAS 语言作 为一个统计计算语言的用法,以及 SAS 过程使用的初步知识。 2.1SAS 语 言 构 成 2.1.1 SAS 语句 SAS 语言程序由数据步和过程步组成。数据步用来生成数据集、计算、整理数据,过 程步用来对数据进行分析、报告。SAS 语言的基本单位是语句,每个 SAS 语句一般由一个 关键字(如 DATA,PROC,INPUT ,CARDS ,BY)开头,包含 SAS 名字、特殊字符、运 算符等,以分号结束。 SAS 关键字是用于 SAS 语句开头的特殊单词,SAS 语句除了赋值、累加、注释、空语 句以外都以关键字开头。SAS 名字在 SAS 程序中标识

3、各种 SAS 成分,如变量、数据集、数 据库,等等。SAS 名字由 1 到 8 个字母、数字、下划线组成,第一个字符必须是字母或下 划线。SAS 关键字和 SAS 名字都不分大小写。 2.1.2 SAS 表达式 SAS 数据步程序中的计算用表达式完成。表达式把常量、变量、函数调用用运算符、 括号连接起来得到一个计算结果。 SAS 常量主要有数值型、字符型两种,并且还提供了用于表达日期、时间的数据类型。 例如 l 数值型:12 ,7.5,2.5E10 l 字符型:Beijing, Li Ming,李明 l 日期型:13JUL1998d l 时间型:14:20t l 日期时间型:13JUL1998

4、:14:20:32dt 数值型常数可以用整数、定点实数、科学计数法实数表示。字符型常数为两边用单撇号或两 边用双撇号包围的若干字符。日期型常数是在表示日期的字符串后加一个字母 d(大小写均 可) ,中间没有空格。时间型常数是在表示时间的字符串后加一个字母 t。日期时间型常数在 表示日期时间的字符串后加字母 dt。 1 因为 SAS 是一种数据处理语言,而实际数据中经常会遇到缺失值,比如没有观测到数 值,被访问人不肯回答,等等。SAS 中用一个单独的小数点来表示缺失值常量。 SAS 变量的基本类型有两种:数值型和字符型。日期、时间等变量存为数值型。SAS 的数值型变量可以存储任意整数、定点实数、

5、浮点实数,一般不关心其区别。数值型变量在 数据集中的存贮一般使用 8 个字节。SAS 的字符型变量缺省的长度是 8 个字符,但是如果 在 INPUT 语句中输入字符型变量时指定了长度则不受此限制。 可以用 LENGTH 语句直接指 定变量长度,LENGTH 语句一般应出现在变量定义之前,格式为: LENGTH 变量名 $ 长度; 例如 LENGTH name $ 20; SAS 运算符包括算术、比较、逻辑等运算符。 算术运算符为 * / *,运算优先级按通常的优先规则。 比较运算符用于比较常量、变量的值大小、相等,包括 = 1000) AND (salary = 1000) AND (sala

6、ry (比如 3符在有些语言中用作“不等于” 比较算符,而 SAS 中用法则较特殊。 2.1.3 SAS 程序规则 SAS 程序由语句构成。每个语句以分号结尾(最常见的 SAS 编程错误就是丢失分号) 。 因为分号作为语句结束标志,所以 SAS 语句不需要单独占一行,一个语句可以写到多行(不 需任何续行标志) ,也可以在一行连续写几个语句。SAS 语言中只要允许用一个空格的地方 就可以加入任意多个空白(空格、制表符、回车) ,允许用空格的地方是名字周围、运算符 周围。比如,程序 proc print data=c9501; by run; avg; 和 2 proc print data=c9

7、501;by avg;run; 是等效的。另外,SAS 关键字和名字大小写不分,但字符型数据值要区分大小写,比如 Beijing和BEIJING被认为是不同的数据值。 在 SAS 程序中可以加入注释,注释使用 C 语言语法,用/*和*/在两端界定注释,这种 注释可以出现在任何允许加入空格的位置,可以占多行。我们一般只把注释单独占一行或若 干行,不把注释与程序代码放在同一行。注释的另一个作用是把某些代码暂时屏蔽使其不能 运行。下面是一个注释的例子: /* 生成 95 级 1 班考试成绩的数据集 */ data c9501; SAS 程序包括数据步和过程步两种结构,每一个步是一段相对完整的可以单独

8、运行的 程序。数据步用来生成、整理数据和进行自编程计算,过程步调用 SAS 已编好的处理过程 对数据进行处理。自己用 SAS 编程序进行计算主要在数据步中进行。 SAS 数据步以 DATA 语句开头,以 RUN 语句结尾。DATA 语句中可以使用 INPUT 、 CARDS、INFILE、SET、MERGE 等语句指定数据来源输入数据,也可以用赋值、分支、循 环等编程结构直接生成数据或对输入的数据进行修改。 2.2SAS 用 作 一 般 高 级 语 言 SAS 是一种专用的数据处理、统计计算语言,但是它也包含一般的高级语言编程能力 并扩充了许多数学、统计等方面的函数。我们先介绍 SAS 语言用

9、来进行一般编程计算的功 能,然后再讲解其独特的数据处理功能。 SAS 语言的编程计算能力主要由 SAS 数据步提供(另外 SAS 还提供了一个 SAS/IML 模块可以进行向量、矩阵运算,读者有兴趣可以自己学习) 。所以,下面给出的例子如果没 有写 DATA 语句实际应该在例子前面加上 DATA 语句, 在后面加上 RUN 语句才能实际运行。 DATA 语句以关键字 DATA 开头,后面给出一个数据集名,这是本数据步要生成的数据集的 名字,例如: data tmp1; 也可以省略数据集名, 这时 SAS 自动生成一个临时数据集名。 还可以使用特殊名字_NULL_, 表示本数据步不生成数据集。

10、2.2.1 赋值语句 在 SAS 中用赋值语句计算一个值并存放到变量中。格式为 变量名 表达式 ; 例如: avg = (math + chinese/120*100)/2; isfem = (sex=女); y=sin(x)*2; newv = .; 其中第一个赋值语句用一个公式计算平均分数。第二个生成一个取值为 0 或 1 的变量,性别 为女时为 1,否则为 0。第三个使用了正弦函数和乘方运算。第四个给变量赋了缺失值。 注意想试验上述语句要把它们放入数据步中, 并且等号右边的表达式中的各变量应该是存在 3 的,否则会得到缺失值结果。 2.2.2 输出语句 SAS 数据步的输出一般是数据集,

11、用赋值语句计算的结果会自动写入数据集。SAS 也 提供了一个 PUT 语句,可以象其它语言程序的 PRINT、WRITE(*,*) 、printf 等语句一样立 即打印输出结果。 PUT 语句在关键字后面列出要输出的各项,每一项可以是变量名或字符 串,不能为数值常量或表达式,各项之间用空格分开。PUT 语句的输出结果显示在 LOG 窗 口。例如: data; x=0.5; y=sin(x); put Sine function value of x is y; run; 结果将在运行记录窗口显示一行 Sine function value of 0.5 is 0.4794255386 另外,在

12、 PUT 语句中使用 “变量名”来指定输出项可以显示带有变量名的输出结果,比 如把上程序中的 PUT 语句改为 put x= y=; 则结果在 LOG 窗口显示为 X=0.5 Y=0.4794255386 PUT 语句的输出项还可以指定具体列位置,比如,下面的 PUT 语句指定把 X 数值显示 在第 1020 列,把 Y 数值显示在第 3040 列,并保留 6 位小数: put x 10-20 .6 y 30-40 .6; 在指定的列位置内,数值型数据靠右对齐,字符型数据靠左对齐。要保留的小数位数写在一 个小数点后面,如果变量为整数值或者字符型则不必指定小数位数。 PUT 语句还可以使用类似

13、C、FORTRAN 语言的 “域宽.精度 ”方式指定输出的宽度和 精度,例如, put x 20.8 y 20.8; 使 X 占用第 120 列,8 位小数,右对齐;Y 占用第 2140 列,8 位小数,右对齐。其中 20.8 是多种 SAS 输出格式中最常见的一种,用于输出数值型数据,小数点前面为输出宽度, 小数点后面为输出精度(小数位数) 。对于字符型变量,要指定其输出宽度可以用“$宽度.” 的格式,如“$10.” 指定字符型变量输出宽度为 10 位。输出占不满指定宽度时,数值型数 据向右对齐,字符型数据向左对齐。 字符型常量可以用于 PUT 语句中,但不能规定占用的列位置或者宽度。 如果

14、希望 PUT 语句的输出不产生换行,使下一个 PUT 的结果可以显示在同一行,只要 在 PUT 语句结尾处加一个 符,如: put i ; PUT 语句的输出结果缺省情况下被送到运行记录窗口。在 PUT 语句之前用 FILE 语句 可以改变 PUT 语句的输出目的地。比如,在 PUT 语句之前用 file print; 可以把 PUT 语句的输出转向到输出窗口。 FILE 语句中指定一个包含文件名的字符串可以 在 把 PUT 语句的输出转向到此文件中。比如 file tmp.out; 4 把后续的 PUT 语句输出转向到当前工作目录下的文件“ tmp.out”中,生成输出文件 tmp.out。

15、 注意当前工作目录在 SAS 状态栏的右方显示,双击可以更改。文件名也可以指定全路径, 比如“C:SASTMP.OUT ” 。 2.2.3 分支结构 如果需要在某条件满足时执行某一操作,可以用 IF 条件 THEN 语句; 的结构。比如,如果 X 为正数则显示“X 为正数” ,可以用 IF x0 THEN PUT X 为正数; 有时我们在条件成立时需要进行的操作无法用一个语句完成,这时可以使用 SAS 提供 的复 合 语 句功能:只要把若干个语句用“DO;”语句和“END;” 语句包围起来,就可以把它 们看作是一个语句,就可以用在需要指定一个语句的地方。比如,当 X 为正数时不仅显示 X 为正

16、数,而且将其加倍并显示值,可以用如下带有复合语句的 IF 结构: IF x0 THEN DO; PUT X 为正数; x = 2*x; PUT END; x=; 以上的 IF 结构的用法只规定了条件成立时的操作,如果同时需要规定条件不成立时进 行什么操作,使用带有 ELSE 字句的 IF 结构: IF 条件 THEN 语句; ELSE 语句; 其中“语句”均可以是复合语句。例如,当 X 为非负时将 X 加倍,为负时将 X 取绝对值, 用如下程序: IF x=0 THEN x=2*x; ELSE x = -x; 注意 SAS 的分支结构的写法与其它语言有些不同,它不用 ENDIF 结束。 SAS 的 IF 结构允许嵌套,但 SAS 不提供 IFELSEIFELSE 的多分支结构。SAS 的 SELECT 结构提供了更为灵活的多分支结构, 可以实现比其它语

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号