扛不住了,我要睡觉!但是又想把这篇文章写完再睡。快点快点!!!
今天了解到一个新的东西,proc format cntlin=XXX,XXX就是一个数据集,我们可以叫它parent数据集。这个数据集会被用来format其他数据集,有点抽象?SAS官网都没讲清楚,看我的例子说不定你就懂了。
下面来创建parent数据集。
ctrl才是parent数据集,scale只是借用它的数据。
scale数据集
ctrl数据集(parent数据集)
创建end=last只是等下我们要用到SASHELP.classfit数据集,里面年龄有等于16,这时候就会触发这个format,hlo="0"没啥特别意义,就是用来区分值不在上面的范围的时候输出什么。
start和end大家可以看作一个范围,因为SASHELP.classfit里面年龄就11,12,13,14,15,16,不太好设置大范围,所以我就start=end。
注意这个“fmtname”很重要,它相当于触发器,虽然我不知道是不是一定要起这个名字,也没时间验证了。
classfit数据集:
之后我们输出报表,这时候不用proc format cntlin,PercentageFormat12应该是没用的,所以输出就是输出原数据。
看到数据没变。
接着我们取消注释,要启用format了。
出来了,看到对应的年龄都变成了百分比,而且16岁的输出了error。
能体会到怎么用了吗?没体会到我也不跟你详细解释了。
下面再看一个例子:截图顺序可以理解成程序顺序。
这个数据集长这样,也有start和label,我不确定这个是不是固定的,有时间再试。
注意这个order,在下面要输出的数据集中,即adaesummary1
之后在输出图的时候,这个order被format成具体的AEDECOD;
adaesummary1数据集中的order被format成格式数据集中的start,然后这个start又对应具体的label,最后输出长这样,order就是红框里的东西
这就是proc format cntlin的用法!也可以去SAS官网搜proc format cntlin
大爷,脑袋懵死掉,睡觉!
网友评论