首发于“生信补给站” :https://mp.weixin.qq.com/s/LJfgxbTqsp8egnQxEI0nJg

生物医学或其他研究论文中的“表一”多为基线特征的描述性统计。使用R单独进行统计,汇总,然后结果复制到excel表中,耗时耗力且易错!

tableone包“应运而生”,可以非常简单快捷的解决这个问题,重点是学习成本很低,大概几分钟?

一 载入数据,R包

## install.packages("tableone")
library(tableone)
library(survival)
data(pbc)
head(pbc)

二 单组汇总

1 汇总整个数据集

对pbc整个数据集进行描述汇总,使用CreateTableOne()即可

tab1 <- CreateTableOne(data = pbc)
print(tab1)

由于数据中的分类变量是数值形式,所以分类变量展示的也是均值(标准差)。

2 设置变量类型

dput(names(pbc)) # 输出据集变量名称
## 需要汇总的变量
myVars <- c("time", "status", "trt", "age", "sex", "ascites", "edema", "bili",  "copper", "ast", "stage")
## 需要转为分类变量的变量
catVars <- c("status", "trt", "ascites", "stage")
## Create a TableOne object
tab2 <- CreateTableOne(vars = myVars, data = pbc, factorVars = catVars)
print(tab2, showAllLevels = TRUE)

showAllLevels = TRUE 会展示分类变量的所有分类因子的结果。

此处随意选择一些变量进行功能展示, 分类变量显示计数和百分比 。

3 非正态分布变量

由于默认连续变量呈正态分布,因此上面的连续变量均表示为均数+标准差。

实际数据中的非正态分布数据,可通过nonnormal指定,则此变量展示为中位数(四分位数)。

#假设"bili","ast","copper"非正态分布
biomarkers <- c("bili","copper","ast")
print(tab2, nonnormal = biomarkers)

可见"bili","ast","copper"均用中位数(四分位数)表示;如果设置nonnormal = TRUE,则所有变量都按非正态分布处理。

三 多组汇总

1 分组统计

实际结果中,通常需要对数据集按照某个变量的分组进行汇总。下面展示使用trt进行分组汇总:

tab3 <- CreateTableOne(vars = myVars, strata = "trt" , data = pbc, factorVars = catVars)
tab3

注意NA不作为分组

结果可看出,对trt进行分组且对每一组均进行了汇总,且统计输出了检验的P值。

检验方法:分类变量默认使用卡方检验(chisq.test());连续变量默认使用方差分析(oneway.test()),当两组时方差分析等用于t检验。

2 定义检验方式

非正态性的数据展示方式为中位数(四分位数),检验方式也最好不使用T检验:

非正态分布的连续变量使用kruskal.test()检验,两组间比较时,kruskal.test()wilcox.test()等效;

分类变量可使用fisher.test()进行fisher精确检验,通过exact()指定进行fisher精确检验的变量。

#addOverall 添加Overall信息
tab4 <- CreateTableOne(vars = myVars, strata = "trt" , data = pbc, factorVars = catVars,
                    addOverall = TRUE )
#exact设置fisher精确检验的变量
print(tab4, nonnormal = biomarkers, exact = "stage")

四 导出结果

write.csv一键导出结果

tab4Mat <- print(tab4, nonnormal = biomarkers, exact = "stage", quote = FALSE, noSpaces = TRUE, printToggle = FALSE, showAllLevels = TRUE)
## 保存为 CSV 格式文件
write.csv(tab4Mat, file = "myTable.csv")

随便套用了一个表格格式,可以在excel中弄成喜(文)欢(章)的样式,这个自己发

参考资料:

https://cran.r-project.org/web/packages/tableone/vignettes/introduction.html

PS:有个交流的讨论组,想沟通交流的,后台回复”入群“。

◆ ◆ ◆ ◆ ◆

精心整理(含图版)|R语言生信分析,可视化,你要的全拿走,建议收藏!

R|tableone 快速绘制文章“表一”-基线特征三线表的更多相关文章

  1. canvas快速绘制圆形、三角形、矩形、多边形

    想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...

  2. 转】R利剑NoSQL系列文章 之 Hive

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! Posted: Jul 27, 2013 Ta ...

  3. 快速创建InfoPath表单

    快速创建InfoPath表单 2010年已经过去了一半了,这时候再说初识InfoPath可能会被很多人笑话,但是又有多少人真正认识InfoPath呢?无论你是刚刚 听说这个东西还是它的老相好都请同我一 ...

  4. 使用Sql语句快速将数据表转换成实体类

    开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...

  5. 利用flask-sqlacodegen快速导入ORM表结构

    利用flask-sqlacodegen快速导入ORM表结构 友情提示:如果是使用pymysql请预先pip install 哦~ 这是window下使用virtualenv环境下执行的 Linux用户 ...

  6. 转】R利剑NoSQL系列文章 之 Cassandra

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! R利剑NoSQL系列文章 之 Cassandr ...

  7. 在mysql数据库中,文章表设计有啥好的思路

    Q: 用mysql设计一张文章表,不知道有啥好的思路! 我是这样的,应为考虑附件和图片,所以我的文章表除了有varchar(1000)的文章内容,还设置了个Bolb接收附件和图片. 我用的是mysql ...

  8. [原创]react-vio-form 快速构建React表单应用

    react-vio-form 是一个react的快速轻量表单库,能快速实现表单构建.提供自定义表单格式.表单校验.表单信息反馈.表单信息隔离等功能.可采用组件声明或者API的形式来实现表单的功能 de ...

  9. 分析WordPress数据表之文章表(功能篇)

    数据表分析 wp_posts(文章表) 表字段如下:ID(文章ID)post_author(文章作者名,我想可以是为用户名,也可以是用户ID)post_date(文章发布日期)post_date_gm ...

随机推荐

  1. c语言函数指针的理解与使用(学习)

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: 1 2 3 A) char * (*fun1)(char * p1,char * p2); B) char  ...

  2. Trie树的插入,查前缀,查单词,删前缀和删单词。

    这个Trie原先用C++就敲得很熟了,看了蓝桥杯的视频后学会把一个功能这样封装起来,以后用的时候就很爽可以直接调用了,所以就用Java写了: public class Trie { private f ...

  3. 一个类似ThinkPHP的Node.js框架——QuickNode

    QuickNode Node.js从QuickNode开始,让restful接口开发更简单! PHP的MVC 作为一名曾经的PHP开发者,我也有过三年多的thinkphp使用经验,那是我学习PHP接触 ...

  4. Widgets学习

    ListView ListView RecyclerView RecyclerView ExpandableListView 关闭箭头 elvMsg.setGroupIndicator(null); ...

  5. Algorithms第3章及少量习题

    第三章的主要思想就是DFS.讲了图上的DFS操作,然后讲了各种应用.这章默认图都是用邻接矩阵存的. procedure explore(G, v) Input: G = (V, E) is a gra ...

  6. xshell 常用命令1

    date命令 date命令是显示或设置系统时间与日期. 很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作.延时通常用于脚本执行过程中提供一段等待的时间.日期可以以多种格 ...

  7. 3名程序员被抓!开发“万能钥匙”APP,撬走3个亿

    来自:程序员头条 报道 又有 3 名程序员被抓!开发"万能钥匙"APP,撬走 3 亿! 前几天,据央视新闻报道,上海公安机关接到共享单车企业报案,随后破获了一起共享单车万能解锁 A ...

  8. Ubuntu18.04安装Fabric

    本文介绍如何在Ubuntu18.04中搭建Fabric1.4实验环境,默认使用root用户. 1.安装Golang 首先下载Golang安装包,安装包可以从这里下载.这里下载的是go1.13.4.li ...

  9. WiFi产生电磁辐射或让人想去自杀

    随着互联网在生活中的地位越来越重要,WiFi作为一种无线连接方式给了用户极大的便捷,然而有一部分科学家提出WiFi产生的电磁反应会对人的健康受到影响.面对这种说法,我们一直以为是专家在危言耸听,但是如 ...

  10. SpringBoot之SpringApplication

    简介 可以用于从java主方法中引导和启动Spring应用程序的类,在默认情况下,通过以下步骤来启动应用: 创建一个ApplicationContext实例 注册CommandLineProperty ...