SCI里常见这样的表格一,表明人群基线资料,通常都是分段表示,可这样的表格是怎么做出来的呢?
在既往SPSS教程中,我们已经教大家使用SPSS对变量进行分组转换做出SCI表一,但是使用SPSS需要对每个变量单独进行计算,然后手动输入制表,在变量比较多的,数据比较大的文件比较麻烦,今天我们来使用R语言轻松做出SCI中的表一
首先打开我们的数据,是一个炎症因子和肺炎发生相关的数据, fy为是否肺炎,age为年龄,tj为痰液检查,sex为性别,其他是炎症指标。我们打算用性别做分组列出基线资料
需要用到foreign、tableone这两个R包,必须事先下载好,我们先把R包和数据导入
library(tableone)
library(foreign)
bc <- read.spss("E:/r/test/sci1.sav",#生成了bc这个数据
use.value.labels=F, to.data.frame=T)
先把数据生成表格并且输出看一看(这一步其实不做也可以)
tab1 <- CreateTableOne(data = bc)
print(tab1)
目前数据还是以连续变量表示(均值加减标准差),没有区分出分类变量
我们需要汇总所有变量及定义分类变量
dput(names(bc))#把bc数据集所有变量导出,这样省去打字的麻烦
allVars <-c("TNF", "IL6", "sTREM1", "PCT", "fy", "xs", "tj", "sex")#所有变量定义为allVars
fvars<-c("tj", "sex","fy")#分类变量定义为fvars
建立表格2,strata表示使用什么变量进行分类显示,我们这里使用sex, 如果是连续变量的话要预先进行分组,也可以事先用SPSS分好,factorVars这里填入分类变量,addOverall表示加入汇总信息
tab2 <- CreateTableOne(vars = allVars, strata = "sex" , data = bc, factorVars=fvars,
addOverall = TRUE )
print(tab2)#输出表格
含有SCI的表一就这样轻松做出来了,我们稍加修改就可以用于发表了。
但是有些同学可能会问,这里的都是正态分布的数据,如果我的数据是如果我的是非正态的整么办?
我们这里假设:TNF是非正态的连续数据,分类变量都是非正态的
bb<- c("TNF")#我们先给他标记一下,bb是非正态的
##使用nonnormal来指定谁是非正态数据 exact定义分类变量
tab3<- print(tab2, nonnormal=bb, exact = fvars, quote = FALSE,
noSpaces = T, printToggle = F, showAllLevels = T)
tab3
最后把文件输出,并打开表格
write.csv(tab3, file = "1.csv")
把表格拷贝入word
最后把表格进行美化一下
这样,可以用于发表的SCI表一就做出来啦,完美,收工
动动小手关注一下吧,更多精彩文章尽在零基础说科研