恩!又有一条群消息引发了我的思考,后续应该还会有接连不断的群消息引发小编的思考...
proc report永远是SAS中老生长谈的一个过程步,如何制表美观也是每个programmer不断探索的一件事。前段时间,在一个群里面,有人发现了SAS输三线表的一个细节,针对这个提出了一个很好(我以为)问题,问题是什么呢?那就是在report输出过程中,如果内容很长rtf换页,页底的横线如何加~
请看问题
这个是一个很好的问题,在临床试验输出Table/listing过程中,难免会遇到分页,如何让页面变的美观呢,关于这个的解决办法,以小编多年(652天)从事临床编程的经验来看,一般都是人为分页,在实现加黑线,如何人为分页呢,稍后小编将详细介绍,先来看看某群友说的在页脚插入一行“黑心”的方法~
1 在页脚插入一行黑线
这种方法呢,也能解决问题,但是呢,排版有点丑,而且最后一页的会有俩条黑线。所以并不采纳,但是方法呢,小编还是在这里列上,以供参考,万一哪一天想不通的你觉得这个方式也可以呢~
请看如何rtf中划线
这里小编将贴一段小编一个rtf设置title的Macro,小编虽然摒弃这种方式,但是还是把这种方式封装在小编的Macro中,其实也就是加上一个参数的事,万一哪天用上了,就可以直接调用~
针对rtf的输出小编将其拆分了6个Macro,以及一个titles填写的Excel模板。要把事做好的,就得做的细,自卖自夸不太好~先来看下那根横向添加的效果。
效果
看到第二张图的时候是不是瞬间觉得这种方式有点丑,这就是小编摒弃这种方式的原因。接下来,小编将介绍在出TLF时候常用的一种加黑线的方式。
2 人为控制换页
说到这里,其实才是本文核心要说的点,如何人为控制换页呢,其实这种方式对于编程来说也是有一点繁琐的,以为小编致力与方式便捷自动化的程序的编写,但是苦于认知水平有限,在没有一个好的解决方案的时候就将就着用。到底是什么方法呢
请看report标记部分
走过路过,不要错过~ 看截图中红色标记部分,其实就是想将观测分一个组,然后利用break after _page/page;来控制换页,一个组一页。这就是小编要说的为啥这样是繁琐的就是因为要自动计划哪些放那一页,也就是这个_page变量的赋值是需要programmer去做的,当然如果一个好的TFL的shell,统计师会画好表格的。按照表格写程序就可以了~忘了说了,这儿还得看一下小编的%rtf_ods_on的写法。
在看看结果吧
给它缩小比例了,看一个大致结构的草图,在看一个单个页面的图:
这种方式是不是看起来美观很多,这就细节做得好,效果就好。
3 酝酿中的自动换页控制...
是的,正如小节标题所述,小编有了一个实现自动化换页的思路,或者构想,只是还是不太成熟,拿出来与大家分享一下。不难发现,rtf页面就那么大,内放的内容也就这么多,能够决定一个一面放多少内容的,小编认为完全是有define 单元格占比,字体大小,变量内容的字符长度决定的,既然知道这些,就在来算一算一个页面能放多少行,每条观测占多少行,这个时候还得把注释和表格title的行数算上,就完全可以实现自动化换行了..看起来计算有点复杂,但是感觉其实做起来并不难,大神,你认为这种方式可行么?
4 期待你的解决方案...
如有好的建议,请留言...万谢!
5 在聊一个群消息
既然聊到report了,在说一点,某群友问了这个问题,有人做回答,我想答案是对的,虽然没有见到提问人最后的反馈,但小编还是相信是这样的, 在report的时候,如果ods里面加了bodytitle的选项,通过ods设置的title会出现在rtf的正文中。这个时候就会出一些问题,如果还是用用这个选项,还要解决问题,建议title里面加上rtf的标记语法,否则就去掉这个选项。来看看这个选项的效果
请见上图,很明显是如提问者说的那种情况.., 加上rtf的标记可以解决这问题,小编就不在过多的说了...