表的绘制,主要是临床三线表。

1.tableone包

  1. #install.packages('tableone')
  2. library(tableone)
  3. set.seed(2017)
  4. age <- sample(30:90,200,replace = T)
  5. gender <- sample(c('Male','Female'),200,replace = T)
  6. cholesterol <- rnorm(200,140,30)
  7. BMI <- rnorm(200,27,8)
  8. Smoking <- sample(c('Yes','No'),200,replace = T)
  9. SBP <- rnorm(200,130,20)
  10. education <- sample(c('High','Middle','Low'),200,replace = T)
  11. income <- sample(c('High','Middle','Low'),200,replace = T)
  12. dt <- data.frame(age=age,gender=gender,
  13. cho=round(cholesterol,2),
  14. bmi=round(BMI,2),
  15. smoking=Smoking,
  16. sbp=round(SBP,2),
  17. edu=education,
  18. income=income)
  19. #将变量名传入变量列表中
  20. vars <- names(dt)
  21. #定义分类变量,用于表格中数据分层
  22. catvars <- c('gender','smoking','edu','income')
  23. table1 <- CreateTableOne(vars = vars, #定义变量列表
  24. data = dt, #数据
  25. factorVars = catvars) #指定分类变量
  26. table1
  27. #分层,增加t检验(连续变量)和卡方检验(分类变量)结果
  28. vars2 <- c('age','cho','sbp','bmi','smoking','edu','income')
  29. table2 <- CreateTableOne(vars2,dt,catvars,strata = c('gender'))
  30. table2

table1结果:

table2结果:

快速导出tableone产出的表格。

  1. if(! require("rJava")) install.packages("rJava")
  2. if(require('rJava')){
  3. # https://cran.r-project.org/src/contrib/Archive/ReporteRs/
  4. if(! require("ReporteRs")) install.packages("ReporteRs")
  5. devtools::install_github('davidgohel/ReporteRsjars')
  6. devtools::install_github('davidgohel/ReporteRs')
  7. }

ReporteRs包安装失败。

2.table1包

  1. if(!require(table1)) install.packages("table1",ask=F,update=F)
  2. require(table1)
  3. library(boot) #使用自带数据
  4. melanoma2 <- melanoma
  5. head(melanoma)
  6. dim(melanoma)
  7. #将感兴趣的因子作为分类
  8. melanoma2$status <- factor(melanoma2$status,
  9. levels = c(2,1,3),
  10. labels = c('Alive',
  11. 'Melanoma death',
  12. 'Non-melanoma death'))
  13. #格式: ~感兴趣的基线变量|感兴趣的分类变量,data
  14. table1(~ factor(sex)+age+factor(ulcer)+thickness|status,
  15. data = melanoma2)



修饰表格。

  1. ## 给分类变量sex指定标签
  2. melanoma2$sex <-
  3. factor(melanoma2$sex, levels=c(1,0),
  4. labels=c("Male",
  5. "Female"))
  6. ## 给分类变量ulcer指定标签
  7. melanoma2$ulcer <-
  8. factor(melanoma2$ulcer, levels=c(0,1),
  9. labels=c("Absent",
  10. "Present"))
  11. ## 给变量名指定标签
  12. label(melanoma2$sex) <- "Sex"
  13. label(melanoma2$age) <- "Age"
  14. label(melanoma2$ulcer) <- "Ulceration"
  15. label(melanoma2$thickness) <- "Thickness"
  16. ## 给连续型变量指定单位
  17. units(melanoma2$age) <- "years"
  18. units(melanoma2$thickness) <- "mm"
  19. ## 再增加overall统计量
  20. table1(~ sex + age + ulcer + thickness | status, data=melanoma2, overall="Total")



进一步细节修饰。

  1. labels <- list(
  2. variables=list(sex="Sex",
  3. age="Age (years)",
  4. ulcer="Ulceration",
  5. thickness="Thickness (mm)"),
  6. groups=list("", "", "Death"))##表格上的第一级Death
  7. # 重新给status命名标签,death放到上面去
  8. levels(melanoma2$status) <- c("Alive", "Melanoma", "Non-melanoma")
  9. #按想要的顺序顺序设置分组或列,
  10. #Total放第一列,split分开status
  11. strata <- c(list(Total=melanoma2), split(melanoma2, melanoma2$status))
  12. # 添加渲染风格-连续型变量与分类变量展示不同
  13. # 连续型渲染风格函数
  14. my.render.cont <- function(x) {
  15. with(stats.apply.rounding(stats.default(x), digits=2), c("",
  16. "Mean (SD)"=sprintf("%s (&plusmn; %s)", MEAN, SD)))
  17. }
  18. # 分类变量渲染风格
  19. my.render.cat <- function(x) {
  20. c("", sapply(stats.default(x), function(y) with(y,
  21. sprintf("%d (%0.0f %%)", FREQ, PCT))))
  22. }
  23. ## 结果
  24. ## groupsapn为分组的个数,1为Total, 1为Alive,以及2为Death
  25. ## 增加了Death的亚组
  26. table1(strata, labels, groupspan=c(1, 1, 2),
  27. render.continuous=my.render.cont, render.categorical=my.render.cat)

这个包更多使用参考:临床三线表

R语言与医学统计图形-【34】绘制统计表格的更多相关文章

  1. R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...

  2. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  3. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  4. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

  5. R语言与医学统计图形【2】散点图、盒形图

    R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...

  6. R语言与医学统计图形【7】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...

  7. R语言与医学统计图形【5】饼图、条件图

    R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...

  8. R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr

    ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...

  9. R语言与医学统计图形【8】颜色的选取

    R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...

  10. R语言与医学统计图形-【27】ggplot2图形组合、字体、保存

    ggplot2绘图系统--图形组合.字体选择.保存输出 1.图形组合 一页多图在基础包中利用par和layout函数来切分画布. ggplot2是先铺好网格背景,再进行绘图,所以要通过切分网格背景来实 ...

随机推荐

  1. 第五章第四周习题: Transformers Architecture with TensorFlow

    目录 Transformer Network Packages 1 - Positional Encoding 1.1 - Sine and Cosine Angles Exercise 1 - ge ...

  2. AIApe问答机器人Scrum Meeting 4.29

    Scrum Meeting 4 日期:2021年4月29日 会议主要内容概述:汇报两日工作,讨论任务优先级. 一.进度情况 组员 负责 两日内已完成的工作 后两日计划完成的工作 工作中遇到的困难 李明 ...

  3. Beta阶段第七次会议

    Beta阶段第七次会议 时间:2020.5.23 完成工作 姓名 工作 难度 完成度 ltx 1.修改小程序页面无法加载bug2.修改条件语句,使得页面能够正常显示 中 90% xyq 1.根据api ...

  4. 【二食堂】Beta - Scrum Meeting 2

    Scrum Meeting 2 例会时间:5.14 18:30~18:50 进度情况 组员 当前进度 今日任务 李健 1. 还在进行摸索,目前做出了一个demo可以进行简单的划词 issue 1. 继 ...

  5. [技术博客] Django中文件的保存与访问

    [技术博客] Django中文件的保存与访问 在TextMarking项目开发中,数据库需要保存用户上传的文本文档. 原型设计:用户点击上传文本->保存文本->文本发送到后端保存为文件. ...

  6. spring security中ajax超时处理

    spring security为我们的系统提供了方便的认证和授权操作.在系统中完成认证和授权后,一般页面页面上大多数是ajax和后台进行操作,那么这个时候可能就会面临session超时,ajax去访问 ...

  7. cf2A Winner(implementation)

    题意: N个回合. 每个回合:name score[名为name的这个人得了score分(可负可正)]. 问最后谁的累积分数是最高的.设为M.如果有好几个都得了M,找出这几个人中哪个最早回合累积分数超 ...

  8. hdu 2795 Billboard(单点更新,区间查询)

    题意: h*w的白板. 有n个广告牌,每个广告牌是1*wi.必须放置在白板的upmost中的leftmost. 输出n个广告牌放置在第几行.如果放不下,输出-1. 数据规格: h, w, and n ...

  9. easyui comboBox的多选框之疑难杂症——逗号篇

    提笔写正文之前,首先要再次提醒一下自己,因为总是记不住,以至大神同事们都开始用"嫌弃"的眼光看自己了--         记得使用easyui中的combobox吗?效果是酱紫滴: ...

  10. SVD专题1 算子的奇异值分解——矩阵形式的推导

    目录 SVD专题1 算子的奇异值分解--矩阵形式的推导 前言 Preface 几点说明 预备知识 Prerequisite 1.1 极分解 Polar Decomposition 1.2 等距同构 U ...