欢迎光临散文网 会员登陆 & 注册

proc means:解决做table时遇到的问题简述

2022-04-12 20:20 作者:CDISC与SAS  | 我要投稿

文章1

XTH,公众号:CDISC与SAS制作汇总表时不用dummy的方法,解决分类变量数据缺失-- proc means/ freq

文章2

徐XTH,公众号:CDISC与SAS如何按照TFL模板给出的顺序出表或者QC

之前文章介绍的方法,在实际工作当中碰到了些许问题。

产生问题的原因如下:

        文章1:按条件筛选之后,proc meas的数据集完全为空。

       文章2:尽管按照proc format notsorted的顺序排列,但是当我们需要proc transpose的时候依然要重新排序。


文章1:

    之前说过proc format和proc means的preloadfmt组合可以不用自建dummy数据,但是实践中发现了一个隐形条件:数据集必须存在format定义的任意一个value换句话说数据集肯定不能为空。


解决方法:

        proc format中新加一个定义:' ' = ' ',引号间要有空格。

        同时空的数据集插入一条n=1的数据,这里n=1详看链接文章1。或者简单来说proc means里的参数var仅能计算数值,那么我直接n=1,这条观测的其他变量就都是=' '。


结论:

        因为proc format和数据集都有了相同的value: ' ',那么就可以实现不用创建dummy的需求。所以说两边具有相同的value,才是能体现preloadfmt的真正价值。


文章2:

        我们在用proc means的时候通常不会class一个变量,比如我想要计算不同性别的受试者在不同药物下的人数,那么自然class药物和性别。而且一般最终的展示是药物为纵列,性别为横行,那么肯定要transpose。

        常用proc transpose应该知道要预先排序,但是如果按照我们proc format notsorted的排序是没办法操作的。


解决方法:

      在proc means产生的数据集中生成一个id=_n_的变量,也就是让id记住当前proc format notsorted的排序,然后这个数据集当作dummy,再和transpose后的数据集merge,最后再按id排序即可。


结论:

       此方法没什么新意,甚至还是需要构造dummy数据集,之后可以再研究下transpose有没有保留排序的方法。


总结:

        实际做表的过程中发现,此一系列方法确实让代码简洁,且分割成块很容易理解。就算项目不同,复制过去更改的地方也只是format。推荐大家使用此方法,尽可能地把需要更改的地方集中在一块。


如有问题,欢迎后台私信讨论。


proc means:解决做table时遇到的问题简述的评论 (共 条)

分享到微博请遵守国家法律