第1章 SAS软件入门 1
1.1 SAS软件功能模块 1
1.2 SAS工作界面 3
1.2.1 工具栏 3
1.2.2 命令行窗口 4
1.2.3 功能窗口 4
1.3 SAS窗口操作 8
1.3.1 资源管理器窗口操作 8
1.3.2 程序编辑窗口操作 9
1.3.3 功能键窗口操作 10
1.3.4 数据集导入和导出 10
习题1 15
第2章 SAS编程基础 16
2.1 SAS语言组件 16
2.1.1 SAS文件 16
2.1.2 SAS外部文件 16
2.1.3 DBMS文件 17
2.1.4 SAS语言元素 17
2.1.5 SAS宏工具 17
2.2 SAS文件系统 17
2.2.1 逻辑库 17
2.2.2 数据集 19
2.2.3 数据文件 22
2.2.4 数据视图 23
2.3 SAS词段和SAS名称 25
2.3.1 SAS词段 25
2.3.2 SAS名称命名规则 26
2.4 SAS程序 26
2.4.1 书写规则 27
2.4.2 数据步 27
2.4.3 过程步 28
2.5 SAS语言元素 28
2.5.1 语句 28
2.5.2 SAS系统选项 29
2.5.3 数据集选项 29
2.6 SAS变量 30
2.6.1 变量类型 30
2.6.2 变量属性 31
2.6.3 变量列表及其缩写规则 31
2.6.4 创建变量 32
2.6.5 输入输出格式 33
2.6.6 自动变量 34
2.7 表达式 35
2.7.1 引用SAS常数 36
2.7.2 SAS算符 37
习题2 40
第3章 数据导入 41
3.1 菜单导入数据 41
3.2 数据步导入原始数据 41
3.2.1 原始数据呈现形式 41
3.2.2 使用INPUT语句读入原始数据 42
3.2.3 列方式输入 43
3.2.4 列表方式输入 44
3.2.5 格式化方式输入 47
3.2.6 命名方式输入 49
3.3 指针控制 50
3.3.1 列行指针控制 51
3.3.2 使用行固定说明符 52
3.3.3 读完数据后的指针位置 53
3.3.4 多个数据行构成一个观测 55
3.3.5 指针超过行结尾 56
3.3.6 指针移到第一列之前 57
3.4 过程步导入数据 57
3.4.1 句法与选项说明 57
3.4.2 导入程序模板 58
3.5 使用锐思RESSET数据库 59
3.5.1 下载SAS数据集 59
3.5.2 使用RESSET数据库系统自动产生SAS程序 62
习题3 63
第4章 数据步数据集操作 64
4.1 创建数据集语句DATA 64
4.1.1 语句格式 65
4.1.2 选项说明 65
4.1.3 特殊数据集名 66
4.1.4 一个DATA语句下多个数据集名 67
4.2 数据行引导语句CARDS与CARDS4 67
4.2.1 CARDS语句 67
4.2.2 CARDS4语句 68
4.3 输出语句PUT 68
4.3.1 语句格式 68
4.3.2 选项说明 69
4.3.3 应用举例 69
4.3.4 指针控制 70
4.3.5 列方式输出 72
4.3.6 列表方式输出 73
4.3.7 格式化输出 74
4.4 读入已存在SAS数据集语句SET 74
4.4.1 语句格式 74
4.4.2 选项说明 75
4.4.3 应用举例 75
4.5 横向合并数据集语句MERGE 80
4.5.1 语句格式 80
4.5.2 选项说明 80
4.5.3 应用举例 80
4.6 BY语句 81
4.6.1 语句格式 81
4.6.2 选项说明 82
4.6.3 BY语句概念 82
4.6.4 FIRST.变量和LAST.变量 82
4.7 删除变量语句DROP与保留变量语句KEEP 82
4.7.1 DROP语句 82
4.7.2 KEEP语句 83
4.7.3 DROP和KEEP语句使用规则 84
4.7.4 数据集选项DROP=和KEEP=使用规则 84
4.8 更改变量名语句RENAME与保留数值语句RETAIN 85
4.8.1 更改变量名语句RENAME 85
4.8.2 保留数值语句RETAIN 86
4.9 输出外部文件语句FILE 89
4.9.1 语句格式 89
4.9.2 应用举例 92
4.10 定义外部数据文件语句INFILE 92
4.10.1 语句格式 92
4.10.2 导入外部数据文件的标准程序 95
4.11 更新数据语句UPDATE 96
4.11.1 语句格式 96
4.11.2 选项说明 97
4.11.3 MERGE语句和UPDATE语句的比较 97
4.11.4 应用举例 97
4.12 修改数据语句MODIFY 99
4.12.1 语句格式 99
4.12.2 选项说明 100
4.12.3 数据集访问方式 100
4.12.4 修改观测 101
4.12.5 与UPDATE等语句的比较 102
4.12.6 应用举例 102
4.13 数据集加密 105
4.13.1 数据集的三种密码 105
4.13.2 应用举例 105
4.14 数据导出 107
4.14.1 菜单导出数据 107
4.14.2 过程步导出数据 107
4.14.3 PUT和FILE语句组合输出外部TXT文本 108
4.15 SAS处理流程 110
4.15.1 SAS处理流程 110
4.15.2 DATA步处理流程 110
4.15.3 DATA步的运行顺序 115
习题4 117
第5章 DATA步数据处理 124
5.1 基本语句 124
5.1.1 赋值语句 124
5.1.2 累加语句 126
5.2 观测的选择与输出 128
5.2.1 IF语句 128
5.2.2 WHERE语句 129
5.2.3 WHERE和IF语句的比较 131
5.2.4 DELETE语句 132
5.2.5 OUTPUT语句 132
5.3 变量属性控制 135
5.3.1 INFORMAT语句与FORMAT语句 135
5.3.2 LENGTH语句与LABEL语句 137
5.3.3 变量类型转换 141
5.4 DO语句及循环控制 144
5.4.1 简单DO语句 144
5.4.2 循环DO语句 145
5.4.3 DO OVER语句 147
5.4.4 DO WHILE语句 148
5.4.5 DO UNTIL语句 148
5.5 选择控制语句SELECT 149
5.5.1 语句格式 149
5.5.2 应用举例 149
5.6 数组 150
5.6.1 显式下标数组语句 151
5.6.2 引用显式下标数组元素 153
5.6.3 隐含下标数组语句 155
5.6.4 引用隐含下标数组元素 156
5.7 GO TO语句与语句标号 158
5.7.1 GO TO语句 158
5.7.2 语句标号 160
5.8 LINK语句 160
5.8.1 语句格式 160
5.8.2 LINK语句与GOTO语句的差别 162
5.9 STOP语句与ABORT语句 162
5.9.1 STOP语句 162
5.9.2 ABORT语句 162
5.10 REMOVE语句与REPLACE语句 166
5.10.1 REMOVE语句 166
5.10.2 REPLACE语句 167
5.11 MISSING语句 168
5.11.1 语句格式 169
5.11.2 应用举例 169
5.12 其他语句 169
5.12.1 LIST语句 169
5.12.2 PUT语句与LIST语句比较 170
5.12.3 CALL语句 170
5.12.4 CALL语句调用子程序 170
5.12.5 NULL语句 171
5.12.6 ERROR语句 172
5.12.7 REFURN语句 173
5.12.8 CONTINUE语句与LEAVE语句 174
习题5 176
第6章 常用函数 181
6.1 SAS函数定义 181
6.1.1 函数定义 181
6.1.2 函数用法 181
6.2 SAS函数自变量与结果 182
6.2.1 函数自变量 182
6.2.2 函数结果 183
6.2.3 显示函数值的简单方法 184
6.3 SAS函数分类 184
6.4 日期时间函数 185
6.4.1 日期时间函数 185
6.4.2 应用举例 186
6.5 概率分布函数 189
6.5.1 标准正态分布 189
6.5.2 卡方分布 190
6.5.3 伽马分布 190
6.5.4 贝塔分布 190
6.5.5 F分布 191
6.5.6 t分布 191
6.5.7 二项分布 191
6.5.8 泊松分布 191
6.5.9 负二项分布 192
6.5.10 超几何分布 192
6.6 分位数函数 193
6.6.1 卡方分布分位数 193
6.6.2 贝塔分布分位数 193
6.6.3 F分布分位数 193
6.6.4 t分布分位数 193
6.6.5 正态分布分位数 194
6.6.6 伽马分布分位数 194
6.7 样本统计函数 194
6.8 随机数函数 196
6.8.1 正态分布 196
6.8.2 均匀分布 197
6.8.3 二项分布 198
6.8.4 伽马分布 198
6.8.5 泊松分布 199
6.8.6 贝塔分布 199
6.8.7 指数分布 199
6.8.8 几何分布 200
6.8.9 极值分布 200
6.8.10 随机数函数自变量SEED 201
6.9 SAS CALL子程序 201
6.9.1 CALL子程序类型 201
6.9.2 随机数子程序 202
习题6 203
第7章 通用语句 205
7.1 全局通用语句 205
7.1.1 注释语句 205
7.1.2 DM语句与X语句 206
7.1.3 TITLE语句与FOOTNOTE语句 208
7.1.4 RUN语句与ENDSAS语句 209
7.1.5 LIBNAME语句 210
7.1.6 FILENAME语句 212
7.1.7 %INCLUDE语句 215
7.1.8 %RUN语句与%LIST语句 217
7.1.9 MISSING语句 217
7.1.10 PAGE语句与SKIP语句 218
7.1.11 OPTIONS语句与GOPTIONS语句 218
7.2 过程步通用语句 220
7.2.1 PROC语句 220
7.2.2 VAR语句与MODLE语句 222
7.2.3 ID语句与WHERE语句 222
7.2.4 CLASS语句与BY语句 224
7.2.5 OUTPUT语句与QUIT语句 225
7.2.6 FORMAT语句与ATTRIB语句 226
7.2.7 LABEL语句 227
习题7 228
第8章 变量输入输出格式 230
8.1 输入格式 230
8.1.1 输入格式形式 230
8.1.2 输入格式使用方法 231
8.1.3 输入格式类型 232
8.1.4 数值变量输入格式 232
8.1.5 字符变量输入格式 235
8.2 输出格式 237
8.2.1 输出格式形式 237
8.2.2 输出格式使用方法 237
8.2.3 输出格式类型 238
8.2.4 数值变量输出格式 239
8.2.5 字符变量输出格式 241
8.3 日期时间存储方式 242
8.3.1 SAS日期值存储方式 242
8.3.2 SAS日期时间值存储方式 243
8.4 日期时间输入格式 243
8.4.1 日期时间输入格式 243
8.4.2 应用举例 244
8.5 日期时间输出格式 244
8.5.1 日期时间输出格式 244
8.5.2 应用举例 249
8.6 缺失值处理 251
8.6.1 读入含缺失值的数据 251
8.6.2 系统产生的缺失值 252
习题8 252
第9章 输出控制 254
9.1 输出窗口与内容 254
9.2 日志输出控制 254
9.2.1 日志输出信息类型 254
9.2.2 日志输出信息控制 255
9.2.3 日志输出地点 255
9.2.4 定制日志格式 256
9.2.5 应用举例 256
9.3 运行结果输出控制 256
9.3.1 定制输出格式 257
9.3.2 运行结果输出地点 257
9.3.3 应用举例 258
9.4 图形存储利用与输出 258
9.4.1 图形存储 258
9.4.2 GREPLAY过程 259
9.4.3 输出其他格式图形文件 260
9.5 输出传送系统 261
9.5.1 ODS功能 261
9.5.2 ODS对象与传送目标 261
9.5.3 ODS语句 262
9.5.4 传送目标控制 262
9.5.5 选择输出对象 267
习题9 268
第10章 数据管理 271
10.1 数据集排序 271
10.1.1 排序过程句法 271
10.1.2 PROC SORT语句 271
10.1.3 BY语句 272
10.1.4 应用举例 272
10.2 数据集转置 273
10.2.1 转置过程句法 273
10.2.2 PROC TRANSPOSE语句 273
10.2.3 VAR语句和ID语句 274
10.2.4 应用举例 274
10.3 添加观测 276
10.3.1 APPEND过程句法 277
10.3.2 选项说明 277
10.3.3 应用举例 277
习题10 277
第11章 统计量计算 279
11.1 相关性过程 279
11.1.1 相关过程句法 279
11.1.2 PROC CORR语句 280
11.1.3 其他语句 280
11.1.4 应用举例 281
11.2 频数过程 283
11.2.1 频数过程句法 283
11.2.2 PROC FREQ语句 283
11.2.3 TABLES语句 284
11.2.4 WEIGHT语句 286
11.2.5 BY语句 286
11.2.6 OUTPUT语句 286
11.2.7 应用举例 286
11.3 均值过程 288
11.3.1 均值过程句法 288
11.3.2 PROC MEANS语句 289
11.3.3 其他语句 290
11.3.4 应用举例 292
11.4 单变量过程 295
11.4.1 单变量过程句法 295
11.4.2 PROC UNIVARIATE语句 295
11.4.3 其他语句 296
11.4.4 应用举例 298
习题11 301
第12章 制表与绘图 303
12.1 制表过程 303
12.1.1 制表过程句法 303
12.1.2 TABLE语句 304
12.1.3 应用举例 304
12.2 作图过程 319
12.2.1 作图过程句法 319
12.2.2 PLOT语句 319
12.2.3 SYMBOL语句 320
12.2.4 AXIS语句 320
12.2.5 应用举例 320
12.3 图表过程 329
12.3.1 图表过程句法 329
12.3.2 分类变量及类别 329
12.3.3 选择分析变量和统计量 330
12.3.4 应用举例 331
习题12 337
第13章 SQL 339
13.1 SQL过程简介 339
13.2 查询语句 340
13.2.1 SELECT子句 341
13.2.2 WHERE子句 345
13.2.3 使用汇总函数 349
13.2.4 GROUP BY子句 352
13.2.5 HAVING子句 353
13.2.6 ORDER BY子句 355
13.3 JOIN连接查询 357
13.3.1 内部连接查询 358
13.3.2 外部连接查询 362
13.3.3 JOIN连接和MERGE语句的比较 364
13.4 子查询 367
13.4.1 简单子查询 367
13.4.2 混合子查询 368
13.4.3 子查询与JOIN连接的使用 369
13.5 合并查询 369
13.5.1 SET算符综述 369
13.5.2 由多个查询产生非重复观测(UNION算符) 370
13.5.3 产生只属于第一个查询的观测(EXCEPT算符) 371
13.5.4 从多个查询中产生公共部分(INTERSECT算符) 372
13.5.5 直接连接查询结果(OUTER UNION算符) 373
13.5.6 特殊查询合并方式 374
13.6 创建与更新表 375
13.6.1 创建表 375
13.6.2 在表中插入行 378
13.6.3 对表的其他操作 379
13.7 创建和使用视图功能 382
13.7.1 建立和描述视图 382
13.7.2 更新视图 384
13.7.3 删除视图 384
13.7.4 SQL视图过程技巧 384
习题13 385
第14章 SQL过程编程 388
14.1 使用PROC SQL选项来建立和调试查询 388
14.1.1 使用INOBS和OUTOBS减少运行时间 388
14.1.2 用LOOPS选项来限制反复 389
14.1.3 使用NOEXEC选项和VALIDATE语句检查语法 389
14.1.4 用FEEDBACK选项展开SELECT 389
14.1.5 使用STIMER选项计时 390
14.1.6 使用RESET语句重置PROC SQL选项 391
14.2 优化查询 392
14.2.1 使用索引优化查询 392
14.2.2 在SET算符操作中使用关键词ALL 392
14.2.3 创建表和视图时不使用ORDER BY子句 393
14.2.4 使用线内视图来代替临时表 393
14.2.5 比较子查询和连接 393
14.2.6 连接表时使用WHERE(ON)表达式 393
14.3 用表词典来访问SAS系统信息 393
14.3.1 表词典概念 393
14.3.2 使用DICTIONARY.TABLES 394
14.3.3 使用DICTIONARY.COLUMNS 395
14.3.4 使用表视图技巧 396
14.4 在PROC SQL中使用宏工具 396
14.4.1 在PROC SQL中创建宏变量 396
14.4.2 由查询结果的第一个观测创建宏变量 397
14.4.3 从汇总函数结果中创建宏变量 397
14.4.4 创建多个宏变量 398
14.4.5 在宏变量中实现连接 399
14.4.6 使用宏创建表 399
14.4.7 使用PROC SQL自动宏变量 400
14.5 PROC SQL使用SAS输出传输系统ODS 401
习题14 401
第15章 IML编程技术 402
15.1 概述 402
15.1.1 SAS/IML软件特点 402
15.1.2 一个简单IML交互程序 402
15.2 理解IML语言 403
15.2.1 定义矩阵 403
15.2.2 由矩阵标识创建矩阵 403
15.2.3 语句类型 405
15.3 线性回归IML模块 408
15.3.1 解方程组 408
15.3.2 线性回归IML模块程序 409
15.3.3 回归结果作图 411
15.4 矩阵操作 411
15.4.1 输入数据创建矩阵标识 411
15.4.2 使用赋值语句创建矩阵 412
15.4.3 使用矩阵表达式 414
15.4.4 利用行列标展现矩阵 417
15.4.5 缺失值运算举例 418
15.5 IML编程语句 418
15.5.1 IF-THEN语句 418
15.5.2 DO组语句 419
15.5.3 循环语句 419
15.5.4 转移语句 420
15.5.5 创建和运行模块语句 421
15.5.6 停止执行 428
15.6 SAS数据集操作 429
15.6.1 打开SAS数据集 429
15.6.2 编辑SAS数据集 429
15.6.3 SAS数据集排序 430
15.6.4 由SAS数据集创建矩阵 431
15.6.5 由矩阵创建SAS数据集 432
15.6.6 与DATA步的比较 433
15.7 访问外部文件 433
15.7.1 打开外部文件 433
15.7.2 读入外部文件 434
15.7.3 生成外部文件 435
15.7.4 关闭打开的外部文件 436
习题15 437
第16章 宏编程技术 440
16.1 宏变量 440
16.1.1 定义宏变量 441
16.1.2 引用与显示宏变量 441
16.1.3 宏变量范围 445
16.2 宏 446
16.2.1 定义宏 446
16.2.2 调用宏 447
16.2.3 改变宏内宏变量的值 447
16.3 宏参数 448
16.3.1 创建宏参数 448
16.3.2 宏参数赋值 449
16.3.3 宏调用宏 449
16.3.4 条件表达式 451
16.3.5 生成重复文本 452
16.4 宏表达式 452
16.4.1 宏处理器如何处理算术表达式 453
16.4.2 宏处理器如何处理逻辑表达式 453
16.5 数据步接口程序 454
16.5.1 数据步接口程序 454
16.5.2 应用举例 454
16.6 宏程序语句和宏函数 455
16.6.1 宏程序语句 455
16.6.2 宏函数 456
习题16 457
附录A SAS函数与功能 460
附录B IML函数与语句 468
附录C PROC SQL语句格式表 475
附录D PROC SQL功能及对应语句 477
附录E PROC SQL元素基本概念 478
参考文献 482