与牛顿同名的统计教授写的R包可以关注下!非常实用的制作表格的R包~

学术   2024-05-20 13:10   浙江  
这篇文章介绍一款R包,可用于表格的制作,非常实用!

首先安装R包,并且载入:

install.packages("compareGroups")
library("compareGroups")
R包get!

下图是这个R包的运行原理:

参考文献[1]

载入这个R包自带的数据集,并且查看概况:

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")

代码框中的第二行可以实现这个想法。

从结果也可知,selection部分为女性样本。

也可以根据连续变量的值进行选择样本,以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)

一个简单的三线表就制作完毕了!

下一步,继续增加一个变量histhtn:

table2 <- compareGroups(year ~ age + sex + bmi + chol + histhtn, data = regicor)
createTable(table2)

下面介绍几种修饰表格的代码。

关于分类变量的结果展示,可以仅展示百分比:

createTable(table2, type = 1

代码中的type = 1可以帮助实现这个想法。

也可以选择仅展示分类变量的频数,代码如下:

createTable(table2, type = 3)

代码中的type = 3可以实现这个想法。

可以添加样本量的信息,代码如下:

createTable(table2, show.n = TRUE)

可以看到表格的最后一列添加上了样本量信息。

也许有时候只想要查看p值的信息,可以这么做:

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包的更新中添加的,在最初是没有的,它可以快速的出表,代码更加的简洁,如下: 

descrTable(regicor)

代码的意思为对整个数据集进行描述。

有时候所制作的表格太冗长,可以考虑将分类变量的值为“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

公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
3. 《线性混合模型和纵向数据分析》
【通过公众号菜单栏--线上课程】

统计咨询
《服务介绍和经典合作案例》

公众号核心成员的成果发表
《SCI医学1区影响因子9分论文》

公众号核心成员担任SCI杂志Associate Editor!
《JAD杂志Associate editor》
《Frontiers in Neuroscience, Frontiers in Neurology and Frontiers in Psychiatry杂志的神经退行性病变板块》

加入我们
成为我们的课程推广大使,赢取高额回报!
【通过公众号菜单栏--联系我们--招推广员】

▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!



R语言和统计
我们定期更新与R有关的内容,比如R编程基础,作图,实用R包的解读,统计学基础知识,前沿的统计方法,机器学习等等。
 最新文章