vlambda博客
学习文章列表

R语言一键生成好看的Table 1?小白也能十分钟之内搞定!


146+72本期刊《SCI期刊分析+选刊网站》免费领


扫描下方二维码免费领取☟☟☟


地转天旋,万事开头难------白玉






大家好,我 阿琛。谈统计 而色变, 不知道你还记得那些年学过的统计知识吗?从 变量类型 ,到 统计描述 ,以及 假设检验 一串的概念,初识之时以为大家不过萍水相逢,考试过后也便自然向往于江湖。 然而,当打开SCI论文,无论是生信研究,亦或者是临床或基础研究,那熟悉的Table 1让人又爱又恨。下面,让阿琛带大家一起温故而知新,讲述一下这Table 1制作的过往历程。

SPSS经典分析方法回顾

谈及统计分析,相信所有人都不会陌生SPSS软件。不管掌握得如何,都能上来耍一耍。对于如何使用SPSS绘制基线资料表的方法,解螺旋也开设了专门的单元讲解课程,手把手拆解每个步骤。在此,阿琛借花献佛,对这一方法进行一个简单的介绍。

R语言一键生成好看的Table 1?小白也能十分钟之内搞定!
▲ SPSS实现单组连续变量的统计方法

R语言一键生成好看的Table 1?小白也能十分钟之内搞定!
▲ SPSS实现分组连续变量的统计方法

R语言一键生成好看的Table 1?小白也能十分钟之内搞定!
▲ SPSS实现分类变量的统计方法

对该方法感兴趣想进一步了解的小伙伴们,可以直接查看相应的单元课视频内容。
然而,该方法也有一定的缺点,相对耗时,耗力,而且极易出错。

R绘制Table1方法

所谓,江山代有人才出,只是新人总让旧人哭。各种分析软件和分析手段的迭代更新之快,让人眼花缭乱。R的出现,以及随之而来的各种包的开发,让统计分析变得简单与快捷。下面我来介绍一下具体操作步骤:


1

安装和加载R包
首先,引用本次分析所需要用到的R包“tableone”,人如其名,该包可以非常简单又快捷的解决文章Table 1的统计分析和绘制问题。
#install.packages("tableone") library(tableone)

2

读取数据

setwd("C:\\Users\\000\\Desktop\\Table") #设置工作目录 rt <- read.table("clinical.txt",header=T,sep="\t",row.names=1) #读取表格 head(rt) #查看数据结果

此次分析的数据变量包括age,gender,grade,stage,T,M,N,Score,Albumin,以及Group。

R语言一键生成好看的Table 1?小白也能十分钟之内搞定!

3

生成所有患者的统计结果
随后,我们查看一下各种数据的类型:
str(rt)
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!
可以看到,数据集一共包含了317位患者,10个变量;然而,系统将所有的变量都默认为连续型变量;

tab1 <- CreateTableOne(data = rt) #指定数据来源 print(tab1) #查看tab1

由于 还没有对变量的类型进行调整,因此在随后生成的表格中,所有变量的结果都是由平均值(mean)和标准差(SD)两块组成。
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!


4

设定变量信息
接下来,需要我们对要分析的变量名称和变量类型进行手动设置,包括分类变量和非正态分布的变量;
#4.1 设置需要比较的变量名称 myVars <- c("age", "gender", "grade", "stage", "T", "M", "N", "Score", "Albumin") #4.2 设置分类变量 catVars <- c("gender", "grade", "stage", "T", "M", "N") #4.3 设置非正态分布的变量 nonVars <- c("Score")


5

生成All patients的基线资料
tab2 <-CreateTableOne(data =rt, #指定分析数据集
vars = myVars, #指定比较的变量 factorVars = catVars) #指定其中的分类变量print(tab2,nonnormal = nonVars) #指定非正态分布变量

    结果显示:
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!

在表格中,所有呈正态分布的连续变量用平均值和标准差来表示,非正态分布的连续变量通过中位数和四分位数表示,而分类变量则通过百分比(%)来表示。

6

分组统计
tab3 <- CreateTableOne(data = rt,  strata = "Group", #指定分组变量  vars = myVars,  factorVars = catVars) print(tab3,  cramVars = catVars,  nonnormal = nonVars,  exact = "M") #指定进行fisher精确检验

主要是继续参考每个nmf类里面的不同signature的比例,已经不同nmf类的相关性热图

 
   
   
 

可视化是一条永无止境的路。大家加油哈!

结果显
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!

需要注意的是,在分析中过程中,系统默认两组间连续变量使用t检验,分类变量使用卡方检验并进行连续性校正。对于非正态分布的连续变量以及需要进行fisher精确检验的分类变量,需要在绘制过程中通过nonnormal和exact两个参数来进行指出。
随后,通过修改addOverall参数将之前生成的All patients列信息进行合并。
tab4 <- CreateTableOne(data = rt,  strata = "Group", #指定分组变量  vars = myVars,  factorVars = catVars,  addOverall = TRUE) #添加Overall列的分析结果 print(tab4,  cramVars = catVars,  nonnormal = nonVars,  exact = "M") #查看tab4
结果显示:
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!

7

输出结果
到此,所有的表格绘制都已经完成了,最后就是结果的整理与输出。在这里,阿琛给大家提供两种结果的输出方法,供大家自行选择。

方法一:复制黏贴,进行整理

print(tab4,  cramVars = catVars,  nonnormal = nonVars,  exact = "M",  quote = TRUE, #显示引号  noSpaces = TRUE) #删除空格

结果显示:
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!

方法二:直接通过R输出表格csv形式的表格结果

tab5 <- print(tab4,  cramVars = catVars,  nonnormal = nonVars,  exact = "M",  quote = FALSE, #不显示引号  noSpaces = TRUE,  printToggle = FALSE) write.csv(tab5, file = "TABLE1.csv")

结果显示:
R语言一键生成好看的Table 1?小白也能十分钟之内搞定!

此次的分享就到此结束了,大家可以通过回复“阿琛08”来获得示例数据和相应的代码来进行实际操作,真正的点亮这一技能~


欢迎大家关注解螺旋生信频道-挑圈联靠公号~


R语言一键生成好看的Table 1?小白也能十分钟之内搞定!