SAS学习笔记50 SAS数据集索引

在没有索引的情况下,SAS是一条接一条的扫描观测;有索引时,直接跳到该索引对应的观测所在位置。总结一句话就是:节省时间,节省内存,提高效率

当然并不是任何情况下使用索引都能提高工作效率,因为建立索引本身需要耗费内存,是否使用索引,要视具体情况而定。SAS中的语言优化器会自动判断是否需要使用索引

在实际使用中,出于效率考虑,我们只会为经常在WHERE条件中使用的变量,和用来合并SAS数据集的变量建立索引

建立索引的情况:

  • 访问的观测远远小于总体
  • 用于BY语句引用已排序的变量

索引分为简单索引【simple index】和复合索引【composite index】,也可以创建临时索引和永久索引(永久索引一但创建创功,就在文件存储地生成一个.sas7bndx的索引文件)

简单索引由单个变量的值组成,字符变量或数值变量都可以。SAS会自动给简单索引命名为跟相应变量一样的名字

复合索引由多个关键变量的值连接而成。复合变量的名字不能与任一已建立的索引重名

一个数据集可以拥有多个简单和复合索引

DATA步创建索引

在建立数据集的同时建立索引

选项UNIQUE:关键变量的取值必须唯一。该选项防止对于关键变量冗余的记录加入到数据集中。

SAS学习笔记50 SAS数据集索引

PROC DATASETS步创建索引

为已存在的sas数据集创建索引,执行时间快,因为只读取KEY VALUE

 SAS学习笔记50 SAS数据集索引

index选项中:

NOMISS:从索引中排除所有索引变量缺失值的观测

UNIQUE:指定索引变量或者变量组合必须是唯一的

UPDATECENTILES=ALWAYS|NEVER|integer:指定数据值更新多少时,索引也随之更新,可以是总是更新|从不更新|设定的百分比10(表示10%),默认是5(percent)

PROC SQL创建索引

SAS学习笔记50 SAS数据集索引

上一篇:数学建模各种软件对比(MATLAB/Lingo/SAS/SPSS)


下一篇:将SAS日期时间值转换为Java YYYY-MM-DD HH:mm:ss