关注SAS分享号,发现程序的美好
前言
很早之前,小编打算分享一篇关于SAS实现花式表格的输出,后来诸事烦身就渐渐的忘记了这一茬。日前,有朋友问了我一个表格输出问题。小编觉得是一个很有意思的程序,于是就想分享给大家,SAS也可以制作结构复杂的报表!
常规表格
作为一个SAS程序员,日常所接触到的常规表格无外乎是上面的几种结构。这种常规表格也是极容易实现的。一个report过程步就搞定了。
花式表格
小编所说的花式表格,就是结构看似复杂的非常规表格(如上图)。今天小编打算分享一下,上面这个表格的制作思路以及程序!
程序原理
在编写程序时,有时候可能很难查到相关的资料或是有直接实现的办法。于是,我们可以换一换思维,多绕俩下圈子。这也是小编写程序经常运用的一种屡试不爽的方式!
小编实现上面表格的思路如下:
1.将样表分为俩个report过程输出
2.第一个report过程采用多级标题很容易实现输出第一部分(前4行)
3.第二个report过程输出后第二部分(后3行)
4.利用RTF编码规则,将俩部分表格整合到一起。
变化
→
如上,左图为俩个report输出的表格,右图为通过SAS程序修改RTF标记语言后实现表格的整合。
具体实现过程与程序如下:
1、template的编写,设置表格为带边框的
2、定义宏变量,将需要采用多级标题观测值存入宏变量中,并利用report输出。
结果
→
3、利用SAS程序合并RTF,并修改RTF编码,实现上下表格无缝衔接。这里涉及到RTF合并的程序(见小编历史推文:SAS-RTF的合并【完善篇】),基于以前的程序稍作修改!
说明
上面这样修改的原因是生成的每个RTF文件结构都一样,所以可以在各RTF文件的指定位置做出这样的修改,如果template、页眉页脚等信息做出了修改,这里修改的行数大概也是变做出相应的调整!通过这里例子,主要是想分享一种思路,SAS程序也可以实现此类表格的制作。
既然RTF能实现如此结构的输出,那么能否实现Excel花式输出呢,显然也是可以的。Excel的输出,在小编的历史推文中都是有写过的。输出Excel想要实现指定单元格输出,采用DDE的方式也是一种便捷途径。
DDE实现指定单元格精确输出