热线电话:13121318867

登录
首页精彩阅读深入理解SAS之数据指针和PDV流程
深入理解SAS之数据指针和PDV流程
2017-06-27
收藏

深入理解SAS之数据指针和PDV流程

近期由于助研工作的需要,不可避免地要使用到SAS编程。其实我一开始是拒绝的,因为如果使用R,我的效率将大大提升。但是由于老师的强烈要求,不得不重新捡起已落下一年多的SAS。


理解DATA步的数据指针和PDV流程至关重要。它能帮助我们摸清DATA步中的所有执行语句是如何在缓存区,内存以及I/O系统之间转换的。或许这就是所谓的『大局观』?^_^


基本概念——数据指针和PDV

理解SAS的编译过程,需要先了解两个概念。

数据指针:可以理解成在当前的内存缓存区,输入数据所存储的位置;

PDV(Program Data Vector):在DATA步中,所有涉及的变量当前值存储在该向量(PDV)中。

SAS程序的编译过程如下图所示:

下面,以一个简单的SAS程序为例,解释具体编译过程。

一个简单的SAS程序

data test;

input x y z;

cards;

1 2 3
4 5 6
;

run;

编译过程

编译程序,开辟一块内存空间给x,y,z三个变量。

初始化变量为缺失值。用INPUT语句输入的这三个变量在DATA步执行之前被置为缺失值,若是RETAIN语句创建的变量,则被保留。

执行INPUT语句。读入第一行观测,并把读入的数据放在PDV。

执行RUN语句。将PDV中的数据输出至DATA步创建的test数据集中。

SAS返回到DATA语句之后的第一个语句,并初始化PDV中非RETAIN语句创建的变量为缺失值。继续读入下一行观测数据至PDV。

如此循环,直至观测最后一行。结束DATA步,释放内存空间。

数据指针和PDV情况汇总

自动变量


数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询