R|tableone 快速绘制文章“表一”-基线特征三线表
首发于“生信补给站” :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 快速绘制文章“表一”-基线特征三线表的更多相关文章
- canvas快速绘制圆形、三角形、矩形、多边形
想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...
- 转】R利剑NoSQL系列文章 之 Hive
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! Posted: Jul 27, 2013 Ta ...
- 快速创建InfoPath表单
快速创建InfoPath表单 2010年已经过去了一半了,这时候再说初识InfoPath可能会被很多人笑话,但是又有多少人真正认识InfoPath呢?无论你是刚刚 听说这个东西还是它的老相好都请同我一 ...
- 使用Sql语句快速将数据表转换成实体类
开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...
- 利用flask-sqlacodegen快速导入ORM表结构
利用flask-sqlacodegen快速导入ORM表结构 友情提示:如果是使用pymysql请预先pip install 哦~ 这是window下使用virtualenv环境下执行的 Linux用户 ...
- 转】R利剑NoSQL系列文章 之 Cassandra
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! R利剑NoSQL系列文章 之 Cassandr ...
- 在mysql数据库中,文章表设计有啥好的思路
Q: 用mysql设计一张文章表,不知道有啥好的思路! 我是这样的,应为考虑附件和图片,所以我的文章表除了有varchar(1000)的文章内容,还设置了个Bolb接收附件和图片. 我用的是mysql ...
- [原创]react-vio-form 快速构建React表单应用
react-vio-form 是一个react的快速轻量表单库,能快速实现表单构建.提供自定义表单格式.表单校验.表单信息反馈.表单信息隔离等功能.可采用组件声明或者API的形式来实现表单的功能 de ...
- 分析WordPress数据表之文章表(功能篇)
数据表分析 wp_posts(文章表) 表字段如下:ID(文章ID)post_author(文章作者名,我想可以是为用户名,也可以是用户ID)post_date(文章发布日期)post_date_gm ...
随机推荐
- 1043 输出PATest (20 分)
题目:1043 输出PATest (20 分) 给定一个长度不超过 1 的.仅由英文字母构成的字符串.请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符.当然, ...
- Shell 快速入门(十八):特殊符号的使用
在 Shell 语言中,经常会看到中括号和括号组成的特殊标识,例如:[].[[]].(()).$(()).().这些符号经常使我们非常迷惑,弄清楚它们之间的作用和区别非常必要. 在开始之前,我们先来学 ...
- ServletContextListener 监听器
Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码.做一些业务逻辑判断等.其工作原理是,只要你在web.xml文件配置好要 ...
- PHP--修改数据库表前缀
<?php // error_reporting(0); //设置好相关信息 $dbserver='localhost';//连接的服务器一般为localhost $dbname='jfpay' ...
- Linux上部署Tomcat+Nginx负载均衡
前提:配置好了JDK. 我这里是vm上的linux虚拟机,可能不适用于所有情况. 一.Linux上配置Tomcat 1.下载地址:https://tomcat.apache.org/download- ...
- 接口测试-chap3-https请求证书问题
接口地址如果是HTTPS,需要安装证书,或者在发送请求时传入参数verify=False,表示忽略 res = requests.get(url, verify=False)
- 吴裕雄--天生自然 R语言开发学习:基本数据管理(续二)
#---------------------------------------------------------# # R in Action (2nd ed): Chapter 4 # # Ba ...
- 使用 Git 删除本地仓库和远端仓库文件
使用 git bash 来删除 一.将文件(夹)添加到暂存区 这里假设本地和远端都有一个 test.txt 文件先在本地删除,通过 ·git status 查看通过git add test.txt 添 ...
- 从摔得稀碎、蓝屏再到黄牛拒绝加价:iPhone X究竟是怎么了
X究竟是怎么了" title="从摔得稀碎.蓝屏再到黄牛拒绝加价:iPhone X究竟是怎么了"> 近日,iPhone X终于迎来了正式出货的时间.作为十周年的创 ...
- JQuery之选择器篇(一)
今天回顾了之前学习的JQuery选择器,现在简单的总结一下. JQuery选择器类型 主要分为四类 基本选择器 层级选择器 过滤选择器 表单选择器 基本选择器 基本选择器是jQuery中最 ...