第1章 SAS软件入门 1
1.1 SAS软件介绍 1
1.1.1 SAS功能模块 1
1.1.2 SAS模块功能分类 4
1.1.3 SAS系统特点 4
1.1.4 SAS技术水平层次分类 4
1.1.5 本章目的 5
1.2 SAS安装与启动 5
1.2.1 SAS安装 5
1.2.2 SAS启动 6
1.2.3 SAS运行方式 6
1.3 SAS工作界面 6
1.3.1 菜单栏 6
1.3.2 工具栏 7
1.3.3 命令行 8
1.3.4 功能窗口 8
1.4 SAS窗口操作 12
1.4.1 窗口切换 12
1.4.2 视图停放 12
1.4.3 文件浏览及操作 13
1.4.4 程序编辑窗口操作 15
1.4.5 “功能键”窗口 15
1.4.6 “参数选择”窗口 15
1.4.7 数据集导入和导出 16
1.5 SAS帮助文档 21
1.5.1 打开SAS帮助文档 21
1.5.2 使用SAS帮助文档 22
习题 24
第2章 SAS编程基础 26
2.1 SAS语言组件 26
2.1.1 SAS文件 26
2.1.2 SAS外部文件 26
2.1.3 DBMS文件 27
2.1.4 SAS语言元素 27
2.1.5 SAS宏工具 27
2.2 SAS文件系统 27
2.2.1 逻辑库 27
2.2.2 数据集 29
2.2.3 数据文件 33
2.2.4 数据视图 34
2.2.5 存储编译的DATA步程序 36
2.2.6 其他SAS文件 36
2.3 SAS语言元素 37
2.3.1 数据集选项 38
2.3.2 输入和输出格式 38
2.3.3 函数和CALL子程序 39
2.3.4 语句 39
2.3.5 SAS系统选项 40
2.4 表达式 41
2.4.1 SAS常数 41
2.4.2 SAS算符 42
2.5 SAS变量 45
2.5.1 变量类型 45
2.5.2 变量属性 46
2.5.3 变量列表及其缩写规则 46
2.5.4 创建变量 47
2.5.5 变量类型转换 48
2.5.6 自动变量 51
2.6 错误类型与处理 52
2.6.1 句法错 53
2.6.2 词义错 54
2.6.3 运行错 55
2.6.4 数据错 56
2.7 SAS输出 57
2.8 SAS程序 58
2.8.1 书写规则 58
2.8.2 数据步 58
2.8.3 过程步 59
2.9 SAS词段使用和命名规则 59
2.9.1 SAS名称及命名规则 59
2.9.2 其他SAS词段 60
习题 60
第3章 SAS函数与CALL子程序 62
3.1 SAS函数定义 62
3.1.1 函数定义 62
3.1.2 函数用法 62
3.2 SAS函数自变量与结果 63
3.2.1 函数自变量 63
3.2.2 函数结果 64
3.2.3 显示函数值的简单方法 65
3.3 SAS函数分类 65
3.4 日期时间函数 66
3.4.1 日期时间函数 66
3.4.2 应用举例 67
3.5 概率分布函数 70
3.5.1 标准正态分布 70
3.5.2 卡方分布 71
3.5.3 伽马分布 71
3.5.4 贝塔分布 71
3.5.5 F分布 71
3.5.6 t分布 72
3.5.7 二项分布 72
3.5.8 泊松分布 72
3.5.9 负二项分布 73
3.5.10 超几何分布 73
3.6 分位数函数 74
3.6.1 卡方分布分位数 74
3.6.2 贝塔分布分位数 74
3.6.3 F分布分位数 74
3.6.4 t分布分位数 74
3.6.5 正态分布分位数 75
3.6.6 伽马分布分位数 75
3.7 样本统计函数 75
3.7.1 均值 75
3.7.2 最大值 75
3.7.3 最小值 76
3.7.4 非缺失数据个数 76
3.7.5 缺失数据个数 76
3.7.6 求和 76
3.7.7 方差 76
3.7.8 标准差 76
3.7.9 标准误 77
3.7.10 变异系数 77
3.7.11 极差 77
3.7.12 校正平方和 77
3.7.13 未校正平方和 77
3.7.14 偏斜度 77
3.7.15 峰度 78
3.8 随机数函数 78
3.8.1 正态分布 78
3.8.2 均匀分布 79
3.8.3 二项分布 79
3.8.4 伽马分布 80
3.8.5 泊松分布 80
3.8.6 贝塔分布 81
3.8.7 指数分布 81
3.8.8 几何分布 82
3.8.9 极值分布 82
3.8.10 随机数函数自变量SEED 82
3.9 SAS CALL子程序 83
3.9.1 CALL子程序类型 83
3.9.2 随机数子程序 83
习题 85
第4章 访问外部数据文件 86
4.1 概述 86
4.1.1 访问两类外部文件 86
4.1.2 访问外部数据文件方法 87
4.2 通过IMPORT过程 88
4.2.1 句法与选项说明 88
4.2.2 应用举例 89
4.3 通过LIBNAME语句和库引擎 90
4.3.1 读入其他版本或分析软件数据集 90
4.3.2 读入流行数据库(DBMS) 90
4.4 通过ACCESS过程 91
4.4.1 创建访问描述器 91
4.4.2 创建数据视窗 93
4.4.3 由数据视窗创建数据集 94
4.5 通过ODBC 95
4.5.1 创建ODBC数据源 95
4.5.2 创建ODBC引擎逻辑库 95
4.6 创建SAS数据集方法总结 96
习题 97
第5章 数据步读入原始数据 98
5.1 原始数据分类 98
5.1.1 标准数据 98
5.1.2 非标准数据 98
5.1.3 数值数据 98
5.1.4 字符数据 99
5.2 原始数据呈现形式 100
5.3 使用INPUT语句读入原始数据 101
5.3.1 INPUT语句的5种输入方式 101
5.3.2 列方式输入 102
5.3.3 列表方式输入 103
5.3.4 格式化方式输入 106
5.3.5 命名方式输入 107
习题 109
第6章 数据步文件管理 110
6.1 DATA语句 110
6.1.1 语句格式 110
6.1.2 选项说明 111
6.1.3 特殊数据集名 112
6.2 CARDS与CARDS4语句 113
6.2.1 CARDS语句 113
6.2.2 CARDS4语句 113
6.3 PUT语句 114
6.3.1 语句格式 114
6.3.2 选项说明 115
6.3.3 应用举例 115
6.3.4 指针控制 116
6.3.5 列方式输出 117
6.3.6 列表方式输出 117
6.3.7 格式化输出 118
6.4 BY语句 119
6.4.1 语句格式 119
6.4.2 选项说明 119
6.4.3 BY语句概念 119
6.4.4 FIRST.变量和LAST.变量 119
6.5 SET语句 120
6.5.1 语句格式 120
6.5.2 选项说明 120
6.5.3 应用举例 121
6.6 MERGE语句 125
6.6.1 语句格式 125
6.6.2 选项说明 125
6.6.3 应用举例 126
6.7 UPDATE语句 127
6.7.1 语句格式 127
6.7.2 选项说明 127
6.7.3 MERGE语句和UPDATE语句的比较 128
6.7.4 应用举例 128
6.8 MODIFY语句 129
6.8.1 语句格式 129
6.8.2 选项说明 130
6.8.3 数据集访问方式 130
6.8.4 修改观测 131
6.8.5 与UPDATE等语句的比较 132
6.8.6 应用举例 132
6.9 FILE语句 135
6.9.1 语句格式 135
6.9.2 应用举例 137
6.10 INFILE语句 138
6.10.1 语句格式 138
6.10.2 应用举例 141
习题 141
第7章 数据步修改与选择观测 145
7.1 赋值语句 145
7.1.1 语句格式 145
7.1.2 结果变量类型 146
7.1.3 结果变量长度 146
7.2 累加语句 147
7.2.1 语句格式 147
7.2.2 应用举例 147
7.3 DELETE语句与LOSTCARD语句 148
7.3.1 DELETE语句 148
7.3.2 LOSTCARD语句 149
7.4 STOP语句与ABORT语句 151
7.4.1 STOP语句 151
7.4.2 ABORT语句 151
7.5 WHERE语句 154
7.5.1 语句格式 155
7.5.2 WHERE表达式特殊算符 155
7.5.3 应用举例 156
7.5.4 WHERE和子集IF语句比较 156
7.6 OUTPUT语句 157
7.6.1 语句格式 157
7.6.2 应用举例 157
7.7 REMOVE语句与REPLACE语句 159
7.7.1 REMOVE语句 159
7.7.2 REPLACE语句 160
7.8 MISSING语句 162
7.8.1 语句格式 162
7.8.2 应用举例 162
7.9 其他语句 163
7.9.1 LIST语句 163
7.9.2 PUT语句与LIST语句比较 163
7.9.3 CALL语句 164
7.9.4 CALL语句调用子程序 164
7.9.5 NULL语句 165
7.9.6 ERROR语句 165
习题 166
第8章 数据步循环与转移控制 168
8.1 DO语句 168
8.1.1 简单DO语句 169
8.1.2 循环DO语句 169
8.1.3 DO OVER语句 172
8.1.4 DO WHILE语句 172
8.1.5 DO UNTIL语句 173
8.2 END语句 173
8.2.1 语句格式 173
8.2.2 应用举例 173
8.3 SELECT语句 174
8.3.1 语句格式 174
8.3.2 应用举例 174
8.4 IF语句 175
8.4.1 IF-THEN与IF-THEN/ELSE语句 175
8.4.2 子集IF语句 176
8.5 GO TO语句与语句标号 176
8.5.1 GO TO语句 176
8.5.2 语句标号 178
8.6 LINK语句 178
8.6.1 语句格式 178
8.6.2 LINK语句与GOTO语句的差别 180
8.7 RETURN语句 180
8.7.1 语句格式 180
8.7.2 应用举例 181
8.8 CONTINUE语句与LEAVE语句 182
8.8.1 CONTINUE语句 182
8.8.2 LEAVE语句 182
8.8.3 LEAVE语句与CONTINUE语句的差别 183
习题 183
第9章 数据步变量与变量属性控制 185
9.1 ARRAY语句 185
9.1.1 显式下标数组语句 185
9.1.2 引用显式下标数组元素 188
9.1.3 隐含下标数组语句 190
9.1.4 引用隐含数组元素 190
9.2 INFORMAT语句与FORMAT语句 193
9.2.1 INFORMAT语句 193
9.2.2 FORMAT语句 194
9.3 LENGTH语句与LABEL语句 195
9.3.1 LENGTH语句 195
9.3.2 控制变量长度方法 196
9.3.3 数值变量长度控制 196
9.3.4 字符变量长度控制 197
9.3.5 LENGTH语句位置的重要性 198
9.3.6 LABEL语句 198
9.4 ATTRIB语句 199
9.4.1 语句格式 199
9.4.2 可以规定的变量属性 200
9.4.3 应用举例 200
9.5 DROP语句与KEEP语句 200
9.5.1 DROP语句 200
9.5.2 KEEP语句 201
9.5.3 DROP和KEEP语句使用规则 202
9.5.4 数据集选项DROP=和KEEP=使用规则 202
9.6 RENAME语句与RETAIN语句 203
9.6.1 RENAME语句 203
9.6.2 RETAIN语句 204
习题 206
第10章 过程步通用语句 208
10.1 PROC语句 208
10.1.1 语句格式 209
10.1.2 应用举例 209
10.2 VAR语句与MODLE语句 210
10.2.1 VAR语句 210
10.2.2 MODEL语句 210
10.3 ID语句与WHERE语句 211
10.3.1 ID语句 211
10.3.2 WHERE语句 211
10.4 CLASS语句与BY语句 212
10.4.1 CLASS语句 212
10.4.2 BY语句 213
10.5 OUTPUT语句与QUIT语句 214
10.5.1 OUTPUT语句 214
10.5.2 QUIT语句 214
10.6 FORMAT语句与ATTRIB语句 215
10.6.1 FORMAT语句 215
10.6.2 ATTRIB语句 215
10.7 LABEL语句 216
习题 216
第11章 全局通用语句 218
11.1 注释语句 218
11.1.1 语句格式 219
11.1.2 应用举例 219
11.2 DM语句与X语句 219
11.2.1 DM语句 219
11.2.2 X语句 221
11.3 TITLE语句与FOOTNOTE语句 221
11.3.1 TITLE语句 221
11.3.2 FOOTNOTE语句 222
11.4 RUN语句与ENDSAS语句 222
11.4.1 RUN语句 222
11.4.2 ENDSAS语句 223
11.5 LIBNAME语句 223
11.5.1 语句格式 223
11.5.2 选项说明 224
11.5.3 应用举例 224
11.6 FILENAME语句 225
11.6.1 语句格式 225
11.6.2 选项说明 225
11.6.3 应用举例 226
11.7 %INCLUDE语句 228
11.7.1 语句格式 228
11.7.2 选项说明 229
11.7.3 应用举例 229
11.8 %RUN语句与%LIST语句 230
11.8.1 %RUN语句 230
11.8.2 %LIST语句 230
11.9 MISSING语句 230
11.9.1 语句格式 231
11.9.2 应用举例 231
11.10 PAGE语句与SKIP语句 231
11.10.1 PAGE语句 231
11.10.2 SKIP语句 231
11.11 OPTIONS语句与GOPTIONS语句 232
11.11.1 OPTIONS语句 232
11.11.2 GOPTIONS语句 232
习题 233
第12章 输出控制 235
12.1 输出窗口与内容 235
12.2 日志输出控制 235
12.2.1 日志输出信息类型 235
12.2.2 日志输出信息控制 236
12.2.3 日志输出地点 236
12.2.4 定制日志格式 237
12.2.5 应用举例 237
12.3 运行结果输出控制 237
12.3.1 定制输出格式 238
12.3.2 运行结果输出地点 238
12.3.3 应用举例 239
12.4 图形存储利用与输出 239
12.4.1 图形存储 239
12.4.2 GREPLAY过程 240
12.4.3 输出其他格式图形文件 241
12.5 输出传送系统(ODS) 241
12.5.1 ODS功能 242
12.5.2 ODS对象与传送目标 242
12.5.3 ODS语句 243
12.5.4 传送目标控制 243
12.5.5 查询输出对象 247
12.5.6 选择输出对象 248
习题 249
第13章 变量输入输出格式 251
13.1 输入格式 251
13.1.1 输入格式形式 251
13.1.2 输入格式使用方法 252
13.1.3 输入格式类型 253
13.1.4 数值变量输入格式 254
13.1.5 字符变量输入格式 256
13.2 输出格式 258
13.2.1 输出格式形式 258
13.2.2 输出格式使用方法 258
13.2.3 输出格式类型 260
13.2.4 数值变量输出格式 260
13.2.5 字符变量输出格式 262
13.3 日期时间存储方式 263
13.3.1 SAS日期值存储方式 263
13.3.2 SAS日期时间值存储方式 264
13.4 日期时间输入格式 264
13.4.1 日期时间输入格式 264
13.4.2 应用举例 265
13.5 日期时间输出格式 265
13.5.1 日期时间输出格式 265
13.5.2 应用举例 270
13.6 缺失值处理 271
13.6.1 读入含缺失值的数据 271
13.6.2 系统产生的缺失值 272
习题 273
第14章 宏编程技术 274
14.1 概述 274
14.2 宏变量 274
14.2.1 定义宏变量 275
14.2.2 引用宏变量 275
14.2.3 如何隔开宏变量引用和文本 277
14.2.4 显示宏变量值 278
14.2.5 间接引用宏变量 278
14.2.6 自动宏变量 279
14.2.7 宏变量范围 280
14.2.8 全局宏变量 280
14.2.9 局部宏变量 281
14.3 宏 281
14.3.1 宏定义 281
14.3.2 调用一个宏 282
14.3.3 改变宏内宏变量的值 282
14.4 宏参数 283
14.4.1 创建宏参数 283
14.4.2 宏参数赋值 284
14.4.3 宏调用宏 284
14.4.4 条件表达式 285
14.4.5 生成重复文本 286
14.5 宏表达式 287
14.5.1 宏处理器如何处理算术表达式 287
14.5.2 宏处理器如何处理逻辑表达式 288
14.6 宏引用 288
14.6.1 使用%STR和%NRSTR 289
14.6.2 使用%BQUOTE和%NRBQUOTE 290
14.6.3 使用%SUPERQ 290
14.7 宏工具输入输出 291
14.8 数据步接口程序 291
14.8.1 数据步接口程序 292
14.8.2 应用举例 292
14.9 宏程序语句和宏函数 293
14.9.1 宏程序语句 293
14.9.2 宏函数 294
习题 295
第15章 数据管理 298
15.1 数据集排序 298
15.1.1 排序过程句法 298
15.1.2 PROC SORT语句 298
15.1.3 BY语句 299
15.1.4 应用举例 300
15.2 数据集转置 300
15.2.1 转置过程句法 300
15.2.2 PROC TRANSPOSE语句 301
15.2.3 VAR语句和ID语句 301
15.2.4 应用举例 302
15.3 改变输出地点 304
15.3.1 PRINTTO过程句法 305
15.3.2 选项说明 305
15.3.3 应用举例 305
15.4 添加观测 307
15.4.1 APPEND过程句法 307
15.4.2 选项说明 307
15.4.3 应用举例 308
15.5 数据库复制 308
15.5.1 COPY过程句法 308
15.5.2 PROC COPY语句选项 308
15.5.3 应用举例 309
习题 310
第16章 统计量计算 311
16.1 相关过程 311
16.1.1 相关过程句法 311
16.1.2 PROC CORR语句 312
16.1.3 其他语句 312
16.1.4 应用举例 313
16.2 频数过程 315
16.2.1 频数过程句法 315
16.2.2 PROC FREQ语句 315
16.2.3 TABLES语句 316
16.2.4 WEIGHT语句 318
16.2.5 BY语句 318
16.2.6 OUTPUT语句 318
16.2.7 应用举例 320
16.3 均值过程 323
16.3.1 均值过程句法 323
16.3.2 PROC MEANS语句 324
16.3.3 其他语句 325
16.3.4 应用举例 326
16.4 单变量过程 330
16.4.1 单变量过程句法 330
16.4.2 PROC UNIVARIATE语句 331
16.4.3 其他语句 332
16.4.4 应用举例 334
习题 337
第17章 数据展现 339
17.1 打印列表过程 339
17.1.1 打印列表过程句法 339
17.1.2 PROC PRINT语句 340
17.1.3 应用举例 342
17.2 制表过程 345
17.2.1 制表过程句法 345
17.2.2 TABLE语句 346
17.2.3 应用举例 346
17.3 作图过程 352
17.3.1 作图过程句法 352
17.3.2 PLOT语句 353
17.3.3 SYMBOL语句 353
17.3.4 AXIS语句 353
17.3.5 应用举例 353
17.4 图表过程 360
17.4.1 图表过程句法 361
17.4.2 分类变量及类别 361
17.4.3 选择分析变量和统计量 362
17.4.4 应用举例 362
习题 370
第18章 IML编程技术 372
18.1 概述 372
18.1.1 SAS/IML软件特点 372
18.1.2 一个简单IML交互程序 373
18.2 理解IML语言 373
18.2.1 定义矩阵 373
18.2.2 矩阵名字与标识 373
18.2.3 由矩阵标识创建矩阵 374
18.2.4 语句类型 375
18.3 线性回归IML模块 379
18.3.1 解方程组 379
18.3.2 线性回归IML模块程序 379
18.3.3 回归结果作图 381
18.3.4 回归分析练习 381
18.4 矩阵操作 382
18.4.1 输入数据创建矩阵标识 382
18.4.2 使用赋值语句创建矩阵 383
18.4.3 使用矩阵表达式 384
18.4.4 利用行列标展现矩阵 388
18.4.5 缺失值运算举例 389
18.5 IML编程语句 389
18.5.1 IF-THEN语句 389
18.5.2 DO组语句 390
18.5.3 循环语句 390
18.5.4 转移语句 391
18.5.5 创建和运行模块语句 392
18.5.6 停止执行 399
18.6 SAS数据集操作 400
18.6.1 打开一个SAS数据集 400
18.6.2 激活一个SAS数据集 400
18.6.3 显示SAS数据集信息 401
18.6.4 指定默认SAS逻辑库 401
18.6.5 列出观测值 401
18.6.6 由SAS数据集创建矩阵 404
18.6.7 编辑SAS数据集 405
18.6.8 由矩阵创建SAS数据集 406
18.6.9 理解文件结束条件 407
18.6.10 产生概括统计量 407
18.6.11 SAS数据集排序 407
18.6.12 建立SAS数据集索引 408
18.6.13 数据集维护函数 408
18.6.14 与DATA步的相同和不同之处 408
18.7 访问外部文件 409
18.7.1 概述 409
18.7.2 打开外部文件 409
18.7.3 读入外部文件 410
18.7.4 产生外部文件 411
18.7.5 列出打开的外部文件 412
18.7.6 关闭打开的外部文件 412
习题 413
第19章 SQL过程简介 416
19.1 SQL概念 416
19.2 SQL过程 416
19.3 SQL过程术语 416
19.4 PROC SQL特点 417
19.5 PROC SQL与SAS DATA步比较举例 418
第20章 SQL从单个表中检索数据 420
20.1 SELECT语句综述 420
20.2 SELECT子句 420
20.2.1 语句格式 420
20.2.2 选择所有列 421
20.2.3 选择特定列 422
20.2.4 用DISTINCT语句剔除查询结果中重复观测 422
20.2.5 用DESCRIBE语句查看表属性 422
20.2.6 创建说明列 423
20.2.7 计算新列值 423
20.2.8 输出时覆盖列标签 424
20.2.9 为列分配别名 424
20.2.10 CALCULATED语句 425
20.2.11 CASE表达式 425
20.2.12 指定列属性 427
20.3 使用ORDER BY语句排序 427
20.3.1 语句格式 428
20.3.2 对CALCULATED列排序 428
20.3.3 通过指定SELECT子句中列位置排序 429
20.3.4 用没被选择列排序 429
20.3.5 指定特殊排列方式 430
20.3.6 对含缺失值列进行排序 430
20.4 用WHERE语句选择观测 430
20.4.1 语句格式 431
20.4.2 使用IN算符 432
20.4.3 使用IS MISSING算符 432
20.4.4 使用BETWEEN-AND算符 433
20.4.5 使用LIKE算符 433
20.4.6 使用截短字符串算符来比较字符串 433
20.4.7 使用WHERE语句遇到空值时的处理 434
20.5 使用汇总函数汇总数据 435
20.5.1 汇总函数 435
20.5.2 用WHERE子句汇总数据 435
20.5.3 使用SUM函数 436
20.5.4 观测数汇总 436
20.5.5 含缺失值数据汇总 437
20.6 使用GROUP BY子句进行分组汇总 438
20.6.1 语句格式 438
20.6.2 以某列值作为分组依据 438
20.6.3 分组和排序 439
20.6.4 对缺失值排序 439
20.7 用HAVING子句选择分组数据 440
20.7.1 语句格式 440
20.7.2 简单HAVING子句 440
20.7.3 HAVING子句与WHERE子句的区别 441
20.7.4 HAVING子句与汇总函数一起使用 441
20.8 验证查询语句VALIDATE 442
20.8.1 语句格式 442
20.8.2 举例 442
习题 442
第21章 利用SQL语句从多个表中检索数据 443
21.1 使用连接语句JOIN从多个表中检索数据 443
21.1.1 简单连接 443
21.1.2 JOIN方式分类 444
21.1.3 内部连接 444
21.1.4 使用关键词INNER JOIN的内部连接 446
21.1.5 使用比较算符连接表 446
21.1.6 缺失值对连接的影响 447
21.1.7 从多于两个表的数据集中查询数据 448
21.1.8 不同形式的外部连接 448
21.1.9 特殊连接 450
21.1.10 连接使用COALESCE函数 452
21.2 MERGE语句和JOIN连接比较 453
21.2.1 所有行匹配无重复值情况 453
21.2.2 部分行匹配无重复值情况 454
21.2.3 有重复值情况 455
21.3 使用子查询语句选择数据 456
21.3.1 产生单个值的子查询 456
21.3.2 产生多个值的子查询 457
21.3.3 混合子查询 457
21.3.4 用EXISTS语句检测一组数据的存在性 458
21.3.5 子查询的多重嵌套 458
21.3.6 在JOIN连接中使用子查询 459
21.4 JOIN连接和子查询使用 459
21.5 合并两个或多个查询结果 460
21.5.1 SET算符综述 460
21.5.2 由多个查询产生非重复观测(UNION算符) 461
21.5.3 产生只属于第一个查询的观测(EXCEPT算符) 462
21.5.4 从多个查询中产生公共部分(INTERSECT算符) 463
21.5.5 直接连接查询结果(OUTER UNION算符) 464
21.5.6 特殊查询合并方式 465
习题 466
第22章 SQL创建与更新表和视图 467
22.1 创建表 467
22.1.1 用列定义方式创建表 467
22.1.2 从查询结果创建表 468
22.1.3 复制已有表属性 469
22.1.4 使用DATA SET选项语句 470
22.2 在表中插入行 470
22.2.1 用SET子句插入观测 471
22.2.2 用VALUES子句插入行 471
22.2.3 在表中插入查询结果 472
22.3 更新表中数据 473
22.3.1 用同一方式更新表中所有观测 473
22.3.2 用不同方式更新表中观测 474
22.3.3 如何处理更新错误 475
22.4 删除观测行 475
22.5 列修改 475
22.5.1 增加列 475
22.5.2 修改列 476
22.5.3 删除列 477
22.5.4 删除表 477
22.6 创建索引 477
22.6.1 使用PROC SQL来创建索引 478
22.6.2 创建索引建议 478
22.6.3 删除索引 478
22.7 创建和使用完整性约束 479
22.7.1 完整性约束语句格式 479
22.7.2 一般完整性约束 480
22.7.3 参考完整性约束 481
22.7.4 建立完整性约束实例 481
22.8 建立和使用PROC SQL视图 482
22.8.1 建立视图 483
22.8.2 描述视图 484
22.8.3 更新视图 484
22.8.4 在视图中加入LIBNAME语句 485
22.8.5 删除视图 485
22.8.6 设定线内视图 486
22.8.7 SQL过程技巧 486
习题 486
第23章 SQL过程编程 488
23.1 使用PROC SQL选项来建立和调试查询 488
23.1.1 使用INOBS和OUTOBS减少运行时间 488
23.1.2 用LOOPS选项来限制反复 489
23.1.3 使用NOEXEC选项和VALIDATE语句检查语法 489
23.1.4 用FEEDBACK选项展开SELECT 489
23.1.5 使用STIMER选项计时 490
23.1.6 使用RESET语句重置PROC SQL选项 491
23.2 优化查询 492
23.2.1 使用索引优化查询 492
23.2.2 在SET算符操作中使用关键词ALL 492
23.2.3 创建表和视图时不使用ORDER BY子句 492
23.2.4 使用线内视图来代替临时表 493
23.2.5 比较子查询和连接 493
23.2.6 连接表时使用WHERE(ON)表达式 493
23.3 用表词典来访问SAS系统信息 493
23.3.1 表词典概念 493
23.3.2 使用DICTIONARY.TABLES 494
23.3.3 使用DICTIONARY.COLUMNS 495
23.3.4 使用表视图技巧 495
23.4 在PROC SQL中使用宏工具 496
23.4.1 在PROC SQL中创建宏变量 496
23.4.2 由查询结果的第一个观测创建宏变量 497
23.4.3 从汇总函数结果中创建宏变量 497
23.4.4 创建多个宏变量 498
23.4.5 在宏变量中实现连接 498
23.4.6 使用宏创建表 499
23.4.7 使用PROC SQL自动宏变量 500
23.5 PROC SQL使用SAS输出传输系统ODS 501
习题 501
第24章 SAS处理流程与指针控制 502
24.1 SAS处理流程 502
24.1.1 数据步定义 502
24.1.2 数据步处理流程 503
24.2 指针控制 509
24.2.1 列行指针控制 509
24.2.2 使用行固定说明符 510
24.2.3 读完数据后的指针位置 512
24.2.4 多个数据行构成一个观测 513
24.2.5 指针超过行结尾 514
24.2.6 指针移到第一列之前 515
习题 515
附录A SAS函数与功能 516
附录B IML函数与语句 523