基线表(Baseline Table)是医学研究中常用的一种数据表格,用于在研究开始时呈现参与者的初始特征和状态。这些特征通常包括人口统计学数据、健康状况和疾病史、临床指标、实验室检测、生活方式、社会经济等。
本人在既往文章《scitb包1.6版本发布,一个为制作专业统计表格而生的R包》发布乐我自己编写的scitb包,可以一键生成基线表,但是还是需要手动导入word,还是不是很方便,本期介绍怎么把基线表直接导入word。
首先咱们使用scitb包来生成一个基线表,先导入R包和数据,scitb包自带有我既往的早产数据,咱们直接从包调用
library(scitb)
bc<-prematurity
这是一个关于早产低体重儿的数据,低于2500g被认为是低体重儿。数据解释如下:low 是否是小于2500g早产低体重儿,age 母亲的年龄,lwt 末次月经体重,race 种族,smoke 孕期抽烟,ptl 早产史(计数),ht 有高血压病史,ui 子宫过敏,ftv 早孕时看医生的次数,bwt 新生儿体重数值
如何生成基线表可以看我既往的文章,这里就直接上代码了
假设咱们想race为研究目标,因为它是分类变量,咱们最好把它转成因子,因为scitb包有一定对数据类型的判定能力,如果你的分类变量类别大于5个,而你不转成因子的话,它可能自动判定为连续变量,处理方式不一样的,所以这里最好自己设定一下
bc$race<-as.factor(bc$race)
接下来就是定义全部变量,分类变量和分层变量,这和tableone包一模一样,如果你会使用tableone包,使用scitb包起来完全无压力。
allVars <-c("age", "lwt", "smoke", "ptl", "ht", "ui", "ftv", "bwt")
fvars<-c("smoke","ht","ui")
strata<-"race"
一键生成统计结果
out<-scitb1(vars=allVars,fvars=fvars,strata=strata,data=bc)
接下咱们需要把这个表格导入到word里面,需要安装3个包,缺一不可,其实安装flextable包的话也会附带其他两个包安装
library(xtable)
library(flextable)
library(officer)
接下来咱们设置一下导出表格的位置
setwd("E:/公众号文章2024年/R语言优雅的把基线表导出到word")
接下来把out转成flextables格式
tb1<-as_flextable(xtable(out))
接下来咱们创建一个空的文档,后面可以向它写入数据
doc = read_docx()
咱们可以看到doc的路径在,这个是officer包的默认位置
接下来咱们把刚才的tb1添加入空的doc就可以啦
doc = body_add_flextable(doc,tb1)
最后还需对生成的doc进行打印,然后在默认的位置下就可以看到word了
print(doc,"./tb1.docx")
咱们打开看一下,还不是还不是很满意,删除第一列
这样就基本差不多啦
还可以按住表格根据内容自动调整,最后在修饰一下就好啦
将来在新版的scitb包将会添加这个一键导出到word的功能。