前面小编写了SAS-交叉表的自动输出。今天小编打算分享不良事件中常见统计分析表格的几种样式,及自动生成的SAS程序与编程思路。嗯,关于不良事件的分析,常见均是对SOC/PT的例次、例数进行分析。
不良事件频数表
下面来看看关于不良事件的常见的几种表格。
1、汇总表
2、频数表
3、各严重程度频数表
4.各严重程度频数表
嗯,上面各种样式的表格,就是小编今天要分享的内容。小编下面将主要介绍第二个截图的表格实现的过程。后面的几种表格在此基础均可以在衍生而来。计算SOC/PT发生的例次与例数,小编这里是proc sql进行计算,接着便利用proc transpose对计算得到的数据集进行数据集结构的转化,生成需要输出的排列结构,计算合计并根据合计列的例次、例数选择想要的排序方式,嗯,小编这里给添加了一个fisher检验的选择。如何实现每条观测的fisher检验,一会将在后文细细道来。
程序实现过程
嗯,直奔主题,下来看看程序实现的过程。首先来看看小编设置的宏参数。
宏参数
首先,小编是对宏参数group进行处理,获取组别变量,并提取组别名称,将其赋值给相应的宏变量。
分离组别
第二步,分离宏变量minds,提取全部人群数据集及作用在该数据集上的筛选条件,利用proc freq语句计算各分组人数,并创建全局宏变量,将对应的值赋值给相应的宏变量,便于后面的计算。
计算各组人数
接下来就是处理待分析的数据集,从数据集中提取需要分析的观测。也就是利用宏参数Cond来控制。灵活运用proc sql计算合计、各组、相应的SOC/PT的例次、例数及发生率。
核心计算过程
执行到这一步了,我们不妨来看看目前生成的数据集结构是什么样的。
此时
目标
此时不难发现,想要生成满足输出样式的数据集,还需要对数据集的结构进行转化。小编接下来是使用的proc transpose对数据集进行转置。以及为了填补缺失值,对数据集进行了一系列的transpose。
转置
转置
经过一系列的转置的处理,就基本上生成想要的结构了。接下来就要对此进行优化,例如排序的控制,人们都说最好是按合计列的SOC的例次、例数、PT的例次及例数降序的方式进行排序。所以呀,小编就按照此顺序进行排的。
排序
最后呢,加入一个fisher检验,如果需要进行fisher检验的话,可以选择相应的宏参数。小编这里的Fisher检验的过程,自认还是很巧妙的。首先将所有例数变量保留(删除合计列的例数),再将其转置,并入各组总人数,计算未发生不良事件人数,最后通过proc freq进行计算P值。
一
二
写到这里就结束了。这个宏程序的作用好像也就只能输出前文中的第二张截图的中的表格,其实不然,这个程序也能生成第一个表。宏参数label放在这里也不仅仅是花瓶,还是有点作用的。
调用
结果
剩下的表格都可以在此程序的基础上进行处理生成,小编写的这个程序是一个子宏。后面的程序小编这里就不做介绍了,附上程序内部分截图~
宏参数
内部主要过程
程序