SAS' DATA STEP内部逻辑

SAS data step 包含两个阶段,编译和执行阶段,具体流程如下:
此图为sas data 步的流程图

一般来讲,SAS DATA Step处理的第一阶段是编译阶段,主要执行以下任务:
1.自动将SAS语句转换为稍后要执行的机器代码
2. 标识变量的类型以及长度
3. 确定后续的引用是否需要对变量进行类型转化
4. 若存在外部的input语句,则创建输入缓冲区
5. 创建程序数据向量(PDV)
6. 创建数据集和变量的描述性信息
7. 执行语句,但仅限于编译;给编译器如何开始提供相应的信息:DROP,KEEP,RENAME,RETAIN,WHERE,LABEL,LENGTH,FORMAT,ARRAY,BY,ATTRIB
8. 创建自动变量:N,ERROR,END=,IN=,FIRST,LAST,POINT=
第二阶段是执行阶段:
1.从data语句开始,并将_N_变量设置为1(每第二代一次DATA步,_N_加1)。
2. 在PDV中将变量值设置为缺失
3. 使用Input 语句将数据记录读入缓冲区(如果读取原始文件)
4. 使用以下语句之一从SAS数据集读取SAS观察结果:set,merge,modify,update
5. 执行data步内的语句
6. 将观测写入OUTPUT 的数据集(data null 除外)
7. 返回至data 语句
8. 每次迭代都会重复所有操作,直到达到输入文件的末尾
9. 如果DATA Step 不包含输入记录的读取,则默认情况下仅执行一次。
10.上述的默认执行顺序可以通过IF-THEN-ELSE 改变

SAS参考教程中将PDV定义为:“PDV是内存中用来创建数据集的逻辑区域,每次只涉及一条观测值。当程序执行时,SAS从输入缓存区中读入数值或通过执行SAS语句创建数值。数据值赋给PDV中一个合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值