SAS学习笔记50 SAS数据集索引
在没有索引的情况下,SAS是一条接一条的扫描观测;有索引时,直接跳到该索引对应的观测所在位置。总结一句话就是:节省时间,节省内存,提高效率
当然并不是任何情况下使用索引都能提高工作效率,因为建立索引本身需要耗费内存,是否使用索引,要视具体情况而定。SAS中的语言优化器会自动判断是否需要使用索引
在实际使用中,出于效率考虑,我们只会为经常在WHERE条件中使用的变量,和用来合并SAS数据集的变量建立索引
建立索引的情况:
- 访问的观测远远小于总体
- 用于BY语句引用已排序的变量
索引分为简单索引【simple index】和复合索引【composite index】,也可以创建临时索引和永久索引(永久索引一但创建创功,就在文件存储地生成一个.sas7bndx的索引文件)
简单索引由单个变量的值组成,字符变量或数值变量都可以。SAS会自动给简单索引命名为跟相应变量一样的名字
复合索引由多个关键变量的值连接而成。复合变量的名字不能与任一已建立的索引重名
一个数据集可以拥有多个简单和复合索引
DATA步创建索引
在建立数据集的同时建立索引
选项UNIQUE:关键变量的取值必须唯一。该选项防止对于关键变量冗余的记录加入到数据集中。
PROC DATASETS步创建索引
为已存在的sas数据集创建索引,执行时间快,因为只读取KEY VALUE
index选项中:
NOMISS:从索引中排除所有索引变量缺失值的观测
UNIQUE:指定索引变量或者变量组合必须是唯一的
UPDATECENTILES=ALWAYS|NEVER|integer:指定数据值更新多少时,索引也随之更新,可以是总是更新|从不更新|设定的百分比10(表示10%),默认是5(percent)