03-SAS Base

作者

Simon Zhou

发布于

2025年5月22日

修改于

2025年6月7日

1 SAS 数据集

  • 逻辑概念:行、列结构的表格,每行称为一个观测,每列称为一个变量。类似于矩阵,但可以整列都取字符型值,并且变量名也是数据集 的一部分。

  • 等同于数据库术语“表(table)”。

  • 物理存储:操作系统中的文件。包括描述部分(文件创建信息、变量 名、变量的类型等属性)和数据部分。

  • 名字(变量名、数据集名等):大小写不区分,其它规定与一般的高级 语言相同(由字母、下划线、数字组成,第一个字符必须是字母或下划 线,不允许使用汉字以及小数点、空格、减号等特殊字符),不超过32 个字符长。

2 SAS 逻辑库

  • SAS 逻辑库(library,也称数据库) 与SAS 数据集的关系,基本等同 于操作系统中子目录与子目录中文件的关系。

  • SAS 逻辑库有一个“库名(libref)”,可以认做是操作系统中子目录的 一个SAS 中使用的别名。库名长度不超过8 个字符。

  • 建立SAS 逻辑库,实际是指把一个操作系统子目录与一个库名联系起 来。用 libname 语句或快捷图标中的 “New library” 图标。

  • 三个预定义的库: WORK、SASUSER、SASHELP。

  • 数据集的访问格式为“库名. 数据集名”格式,比如SASHELP 库中 的CLASS 数据集写成 SASHELP.CLASS 。

  • WORK 库是“临时库”:其中的SAS 文件在退出SAS 系统时自动删 除。

  • 另外,WORK 库中的数据集可以用“一水平名”访问,即可以省略 “WORK.”。

  • Sashelp :永久逻辑库,包含样本数据及控制 SAS 在您的环境下如何工作的其他文件, 它是只读逻辑库。

  • Sasuser :永久逻辑库,包含的 SAS 文件位于存储个人设置的 Profile 目录下, 这也是便于您存储个人文件的逻辑库。

  • SAS 资源管理器(Explorer) 管理SAS 文件。

  • 除数据集外,SAS 数据库中还可以包含叫做“SAS 目录簿”(SAS catalog) 的SAS 文件,主要用来保存设置、程序代码、图形这样的非 规整数据。

  • 在SAS 资源管理器中双击某一数据集进入 VIEWTABLE 数据管理界面。

3 SAS/INSIGHT

注意,在SAS 9.4版本,不再支持 INSIGHT 。

Note that SAS/INSIGHT® software was discontinued beginning in SAS 9.4 TS1M0.

4 SAS 语句

  • SAS 系统强大的数据管理能力、计算能力、分析能力依赖于作为其基 础的SAS 语言。

  • SAS 语言是一个专用的数据管理与分析语言,它的数据管理功能类似 于数据库语言(如FoxPro1),但又添加了一般高级程序设计语言的许多 成分(如分支、循环、数组),以及专用于数据管理、统计计算的函数。

  • SAS 系统的数据管理、报表、图形、统计分析等功能都可以用SAS 语 言程序来调用,只要指定要完成的任务就可以由SAS 系统按照预先设 计好的程序去执行。

5 SAS 语句的基本构成

  • SAS 语言程序由数据步和过程步组成。

  • 数据步用来生成数据集、计算、整理数据;

  • 过程步用来对数据进行分析、报告。

  • SAS 语言的基本单位是语句, 每个SAS 语句一般由一个关键字(如 DATA, PROC, INPUT, CARDS, BY) 开头, 包含SAS 名字、特殊字 符、运算符等, 以分号结束。

  • SAS 关键字是用于SAS 语句开头的特殊单词, SAS 语句除了赋值、累 加、注释、空语句以外都以关键字开头。

6 SAS 表达式

  • SAS 数据步程序中的计算用表达式完成。

  • 表达式把常量、变量、函数调用用运算符、括号连接起来得到一个计算结果。

6.1 SAS 常量

  • SAS 常量主要有数值型、字符型两种, 并且还提供了用于表达日期、时 间的数据类型。例如

    • 数值型:12, -7.5, 2:5E-10

    • 字符型:’Beijing’, ”Li Ming”, ” 李明”

  • 数值型常数可以用整数、定点实数、科学计数法实数表示。

  • 字符型常数为两边用单撇号或两边用双撇号包围的若干字符。当字符 串内容有单撇号时,可以用双撇号界定,当字符串内容有双撇号时,可 以用单撇号界定。另外,在字符串中,重复的单撇号可以作为一个单 撇号内容,如 ’Tom” cat’ 内容是 “Tom’s cat” 。

6.2 SAS 日期和时间

  • SAS 日期型常量如:’13JUL1998’d;

  • 日期型常数是在表示日期的字符串后加一个字母d(大小写均可), 中间 没有空格。日期值保存为从1960 年1 月1 日后经过的天数。

  • 时间型常量如:’14:20:15.32’t, ’14:20’t(没有秒);

  • 时间型常数是在表示时间的字符串后加一个字母t。保存为秒数。

  • 日期时间型常量如: ’13JUL1998:14:20:15.32’dt;

  • 日期时间型常数在表示日期时间的字符串后加字母 dt。保存为从1960 年1 月1 日0 时后经过的秒数。

6.3 缺失值

  • 数据处理时经常遇到缺失值,如:

    • 数据遗失;

    • 被访者拒绝回答;

    • 节假日无数据。

  • SAS 程序中用一个单独的小数点来表示数值型缺失值常量。

  • 对于字符型数据,用只有一个空格的字符串’ ’表示缺失值。

  • 变量X 是否数值型缺失值可以用X=.来判断,是否字符型缺失值可以用X=’ ’ 来判断。

  • 数值型缺失值在排序和比较时排在最小端。

  • 数值型缺失值参与计算的结果也是缺失的。

6.4 SAS 变量及类型

  • SAS 变量的基本类型有两种:数值型和字符型。

  • 日期、时间等变量存为数值型。

  • 存储长度:SAS 的数值型变量可以存储任意整数、定点实数、浮点实 数, 一般不关心其区别。缺省用8 个字符存储, 精度有16 到17 位有 效数字。

  • SAS 在读入字符型变量时缺省的长度是8 个字符, 但是如果在INPUT 语句中输入字符型变量时指定了长度则不受此限制,最多可存32767 个字符。

  • 直接用赋值语句定义的字符型变量的缺省长度是第一次赋值的字符串 长度。

  • 可以用LENGTH 语句直接指定变量长度, LENGTH 语句一般应出现 在变量定义之前, 格式为:

LENGTH 字符型变量名 $ 长度;

7 SAS 运算符

7.1 SAS 算数运算符

  • SAS 运算符包括算术、比较、逻辑等运算符。

  • 算术运算符为+, -, *, /, **, 运算优先级按通常的优先规则。其中两个星号**表示乘方运算。

7.2 SAS 比较运算符

  • 比较运算符用于比较值大小, 包括

    = ˆ= > < >= <= IN
    EQ NE GT LT GE LE
  • 比较运算符得到“真”或“假”的结果,真用1 表示,假用0 表示。

  • 两个字符型的比较是把短的一个右边补空格到两个长度相同后比较。

  • =, >, <, >=, <= 后面加一个冒号变成如 =: 这样则可以只比较与短的一个等长的部分。

  • 运算符 IN 是一个SAS 特有的比较运算符, 用来检查某个变量的取值 是否在一个给定列表中, 比如 prov in (' 北京', ' 天津', ' 上海', ' 重庆') 可以判断变量prov 的取值是否为四个直辖市之一。

  • 列表为圆括号界定的用逗号或空格分开的若干常量。

  • 也可以使用 NOT IN 表示 “不属于”。

7.3 SAS 逻辑运算符

  • 逻辑运算符用来连接比较得到的结果以构成复杂的条件, 有三种逻辑 运算符: &(AND) |(OR) ˆ(NOT)

  • 复杂的逻辑表达式最好用括号表示其运算优先级以免误记优先规则,这样也有利于阅读程序。

7.4 其它运算符

  • ||(两个连续的 | 号):连接两个字符串;

  • <>:用于取两个运算值中较大一个(比如3 <> 5 结果为5);

  • ><:用于取两个运算值中较小一个(比如 3 >< 5 结果为3)。

8 SAS 程序规则

8.1 基本规则

  • SAS 程序由语句构成。

  • 每个语句以分号结尾(最常见的 SAS 编程错误就是丢失分号)。

  • 一个语句可以写到多行(不需任何续行标志), 也可以在一行连续写几个语句。

  • SAS 语言中只要允许用一个空格的地方就可以加入任意多个空白(空格、制表符、回车)。

  • 允许用空格的地方是名字周围、运算符周围。

8.2 SAS 程序规则示例

proc print
        data=c9501;
    by avg;
run;

等价于:

proc print data=c9501;by avg;run;

9 SAS 注释

  • 在SAS 程序中可以加入注释, 注释使用C 语言语法, 用 /**/ 在两端界定注释, 这种注释可以出现在任何允许加入空格的位置, 可以占多行。

  • 另一种注释是把以星号 * 开头的行作为注释。

  • 一般只把注释单独占一行或若干行, 不把注释与程序代码放在同 一行。

  • 注释的另一个作用是把某些代码暂时屏蔽使其不能运行。

10 常用指令

命令框在 SAS视窗管理系统中主菜单的下方,是一个执行 SAS 指令的工具,在该工具的文本输人框中可以输人指令,用于实现对窗口的管理功能。有些指令只能在指定窗口执行,而有些指令是可以用于大多数窗口,称为窗口通用指令。输入一个指令,点击命令框前面的 “√” 或按下 “ENTER” 键,就可以执行该指令

以下是几条比较常用的指令:

指令 作用
BYE 退出 SAS 系统
CLEAR 清除当前窗口中的内容
END 退出当前窗口,返回编辑窗口
ENDSAS 退出 SAS系统
FILE ’filename 将当前窗口的内容存储到指定文件
HELP 进入帮助窗口
INCLUDE ’filename‘ 调用指定文件
KEYS 进入快捷键定义窗口
LIBNAME 确定 SAS 数据库的内容
LOG 进入日志窗口
NUMS 打开编辑窗口的数字区
NUMS OFF 关闭编辑窗口的数字区
OPTIONS 进入参数定义窗口
OUTPUT 进入输出窗口
PROGRAM 进入编辑窗口
RECALL 调用上次执行的程序
SUBMIT 提交编辑窗口编辑的程序代码

11 功能键

上述有些指令可以通过SAS系统定义的功 能键来完成,这些功能键都是 SAS 系统预先设定的。在指令工具中键入“KEYS”,点击 “√”或按“ENTER”,或按“F9”,就可以查看和自定义功能键。用户可以自己定义功能,同时可以根据自己的习惯,改变功能键的位置。

脚注

  1. FoxPro是一种面向过程编程语言数据库管理系统,也是一种面向对象的编程语言,适用于MS-DOS 、WindowsMacintoshUNIX。最初由Fox Software发布,FoxPro在1992年被微软整体收购后,由Microsoft负责发布和支持工作。FoxPro的最终发布版本是2.6。https://zh.wikipedia.org/zh-cn/FoxPro↩︎