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)
PROC SQL创建索引

SAS学习笔记50 SAS数据集索引的更多相关文章
- SAS学习笔记51 SAS数据集
结构 SAS数据集是关系型的,包含两个部分:描述部分(变量)和数据部分(观察值) 形式 SAS系统中共有两种类型的数据集: 1.SAS 数据文件(SAS datafiles) 2.SAS 数据视窗(S ...
- SAS学习笔记13 SAS数据清洗和加工(续)
查找缺失值 cha[*]和num[*]是建立数组cha和num,但不指定数组中的元素数 自动变量_character_表示数据集中的所有字符型变量 自动变量_numeric_表示数据集中的所有数值型变 ...
- SAS学习笔记40 SAS程序运行过程
当我们提交运行一个DATA步程序后,具体发生了什么事情. SAS程序与其他程序一样,在运行时都要经过两个阶段:编译(Compilation).执行(Execution) 程序首先经过编译阶段,该阶段主 ...
- SAS学习笔记38 SAS Comments注释语句
通常来讲,注释语句有四种: 1.* message; 2.COMMENT message; 3./* message */ 4.%* message; 第一种的主要限制是注释之中不得有“:”符号.通常 ...
- SAS学习笔记31 SAS随机分组方法及实现
随机分组方法包括: 简单随机化(simple randomization) 区组随机化(block randomization) 分层随机化(stratified randomization) 分层区 ...
- SAS学习笔记12 SAS数据清洗和加工
set语句纵向合并 我们把a1和b1进行合并,并区分是来自哪个数据集,会用到in=选项 in=a是产生临时变量a,由于它是a1的选项,所以a的值=1(来自a1)或者=0(不来自a1) in=b是产生临 ...
- SAS学习笔记30 SAS各种常用随机函数
UNIFORM(seed) 产生(0,1)区域均匀分布随机数,乘同余发生器 RANUNI(seed) 产生(0,1)区域均匀分布随机数,素数模发生器 NORMAL(seed) 产生标准正态分布随机数, ...
- SAS学习笔记19 SAS删除空格函数(left、right、trim、strip、compress、compbl函数)
- SAS学习笔记17 SAS生成随机数函数(rand function)
随机推荐
- Spring 源码学习之环境搭建
一.下载Spring 源码 进入 https://github.com/spring-projects/spring-framework/tags 选择下载spring freamework的版本 h ...
- mysql批量更新update中的锁表机制
mysql的行锁是通过索引加载的,即行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁. CREATE TABLE SIMPLE_USER( I ...
- Python3基础 全局变量 在函数内可使用,不可直接修改
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- html两端对齐的代码
html语言两端对齐的代码为: <p style="text-align:justify; text-justify:inter-ideograph;"> 文字,需要对 ...
- MongoDB数据表添加字段
db.tshare_a.insert( { "_id" : ObjectId("57172b0f657f8bbb34d70147"), "picUrl ...
- django ORM 自定义字段
class FixedCharField(models.Field): """ 自定义的char类型的字段类 """ def __init_ ...
- Spring cloud微服务安全实战-6-5jwt改造之日志及错误处理(1)
在代码里,我们没有认证或者授权的filter.认证和授权的工作现在基本上完全由Spring Security的过滤器接管了. 本节就来看下 如何在Spring Security的过滤器链上加入我们自己 ...
- Laya的动画制作,整图动画,序列图动画,时间轴动画,龙骨动画
参考: Laya动画基础 Egret帧动画工具类 版本:2.1.1.1 序列图动画 白鹭的序列图动画,使用TexureMerger合图,然后使用MovieClip类播放. Laya的话,使用图集打包工 ...
- PP篇9 更改计划订单
首先看了下这个函数的版本 还挺新的 S4版本应该是有更新过,里面用了新语法 导入: PLANNEDORDER 计划订单号HEADERDATA 表头数据(来自外部系统) HEA ...
- c# 在静态方法里,怎么能得到调用者的类名?
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); string name = st.GetFrame(1) ...