天天看点

PDV的一些个人理解

最近刚刚考完SAS BASE,对这个考试的一大感受就是,只要你理解了PDV,基本上就不成问题。接下来谈谈我对PDV的理解吧,也算是学习SAS的过程中的一个笔记。

SAS的运行有两个阶段需要了解,编译阶段(compilation phase)和执行阶段(execution phase)。

编译阶段SAS主要的任务有:

1.检查语法错误:

(1)漏掉或错拼的关键词

(2)无效的变量名

(3)遗漏或错误的符号

(4)无效的选择项

2.建立PDV:

(1)用建立SAS系统的数据集,一次只 处理一个观测

(2)两个自动变量,_N_用于记录DATA步的执行次数,_ERROR_指示出错的信息,0表示无错误,1表示有错误

3.建立数据集的描述部分:

(1)数据集名

(2)观测和变量个数

(3)变量名及其属性

执行阶段的主要任务有:若数据步编译成功,就开始执行阶段,在这个阶段对源数据文件的每一条记录执行一次数据步,除非在程序中指明其他处理方式。在这个阶段建立数据集的数据部分。

OK,简单了解以上过程后,我们开始对PDV进行稍微细致点的讲解,废话不多,上图:

PDV的一些个人理解
data temp;
input Product Quantity Cost ;
cards;
1 2 3
4 5 6
7 8 9
;
run;
           

(1)扫描所有变量,新建一个输入缓冲,开辟PDV,新建描述性信息。

(2)将PDV中的变量设置为缺失值。

(3)碰到input语句,PDV中读入一条记录。

(4)碰到run语句,数据集写入一条记录

(5)判断是否剩余观测,如是,则继续input观测,PDV中的值在此时置为缺失值,重复2-4过程知道源数据无剩余观测。

retain讲解、where/if讲解、output讲解待更新