我想写一篇data步中,关于PDV的运行逻辑的文章,这是第一部分,是关于一些后面阐述过程中出现相关名字的解释,因为我个人觉得这部分解释是很重要的,我之前学习的时候因为这些问题卡壳过很久。关于这个逻辑部分可能我陆陆续续花了大半年才弄懂。
1、输入数据集、输出数据集、PDV
data class;
set sashelp.class;
run;
如上面代码所示,class数据集就叫做输出数据集,sashelp.class就是输入数据集,然后PDV就是输入数据集到输出数据集之间的一个中间站。
2、隐含output和retain语句
一个普通的data步,在run语句之前是有两个隐藏的语句(如图所示,我把他们写出来了),分别是output和return语句,也就是说你看不到它们两,但是它们两会起作用。output的作用就是让PDV里面是数据输出到输出数据集,return语句的作用就是让输入数据集进行循环,后续我会举例说明的。
3、强制输出
data class_1;
set class;
grp='Total组';
output;
if sex='男' then grp='第一组';
output;
run;
刚刚在上面我描述隐含的output语句,但是有时候我们会自己写output语句,如上面代码所示,这个时候的规则就是,遇到output语句就会输出到输出数据集中,之前说到的隐含output语句就不作用。但是请注意return还是会起作用的。这种情况就叫做强制输出
4、PDV
PDV里面每次只会存放一行观测