最近刚刚考完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进行稍微细致点的讲解,废话不多,上图:
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讲解待更新