这篇文章介绍一款R包,可用于表格的制作,非常实用!
install.packages("compareGroups")
library("compareGroups")
参考文献[1]data("regicor")
summary(regicor)
参考文献[1]下一步,使用year进行分组(这个变量包含三个水平),再选取几个变量(有连续变量也有分类变量)进行做表,代码如下:
compareGroups(year ~ age + sex + bmi + chol, data = regicor)
其中的第一列var为变量名;N为样本量;p.value为p值;method代表使用的检验方法;selection代表是否对样本进一步的选择,这里为ALL,意味着选取所有样本。
下一步,选取一部分的样本进行做表,比如只纳入女性组,代码如下:
compareGroups(year ~ age + bmi + chol, data = regicor,
subset = sex == "Female")
也可以根据连续变量的值进行选择样本,以bmi为例,代码如下:
compareGroups(year ~ age + sex + bmi + chol, data = regicor,
subset = bmi > 20)
从上述method结果可知,对于连续变量,默认为假定数据为正态分布。可以手动进行调整为非正态,代码如下:compareGroups(year ~ age + sex + bmi + triglyc, data = regicor,
method = c(triglyc = 2))
代码框中的第二行可以实现这个想法,即手动设置为非正态。如果按照正态处理,将使用ANOVA检验;如果按照非正态处理,将使用kruskal检验。
可以使用帮助函数?compareGroups查看详情。上面所有的例子所返回的结果相对来说比较粗糙,都称不上是表格的形式输出。下一步,使用函数createTable()进行做表,代码如下:
table1 <- compareGroups(year ~ age + sex + bmi + chol, data = regicor)
createTable(table1)
table2 <- compareGroups(year ~ age + sex + bmi + chol + histhtn, data = regicor)
createTable(table2)
createTable(table2, type = 1)
createTable(table2, type = 3)
createTable(table2, show.n = TRUE)
createTable(table2, show.descr = FALSE)
还可以添加新的一列信息,包含总样本的统计描述,代码如下:
createTable(table2, show.all = TRUE)
也有研究者可能会选择不在表格中汇报p值,那可以这么做:
createTable(table2, show.p.overall = FALSE)
因为year包含三个组别,也许会需要进行多重比较,那可以这么做:
createTable(table2, show.p.mul = TRUE)
下面要介绍的函数是在最近R包的更新中添加的,在最初是没有的,它可以快速的出表,代码更加的简洁,如下:
有时候所制作的表格太冗长,可以考虑将分类变量的值为“No”的信息删除,那可以这么做:
descrTable(regicor, hide.no = "no")
这个函数也可以仅选择感兴趣的变量进行做表,代码如下:
descrTable(~ age + sex, regicor)
也可以选择一个分类变量进行分组,也是以year为例,代码如下:
descrTable(year ~ ., regicor, hide.no = "no")
也可以根据一个连续变量选取特定的样本再做表,代码如下:
descrTable(regicor, subset = age > 66)
最后将表格导出到word,以上面的表格为例,代码如下:
mytable <- descrTable(regicor, subset = age > 66)
export2word(mytable, file = 'table1.docx')
如果在工作路径中找到一个名为 "table1.docx" 的word文件,说明导出成功!好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人![1] https://cran.r-project.org/web/packages/compareGroups/index.html
公众号核心成员担任SCI杂志Associate Editor!▌课程相关咨询可添加R师妹微信: kefu_rstats