R语言画table-三线图
#常规清空,加载包
rm(list = ls())
library(table1)
library(lubridate)
setwd("D:\\生信课题\\R语言画图\\R语言统计与分析\\R语言下载TGCA练习本")
## 读取数据,csv为例,row.names=1设置的是第一列为数据的名称。header=T是指第一行为数据的列名。
check.names=F当你的列名是以数字开头的时候,比如有的时候数据是时间相关的,6:00, 8:00, 10:00等,会在最前面显示一个x并且冒号会给你替换成点(6:00→x6.00)设置了检查名称为False之后就不会有这个问题。
dat=read.csv(file="COAD_survival.csv",row.names=1,header=T,check.names=F)
attach(dat) # 匹配数据,R以下操作均根据这个数据分析
units(dat$Age)="years"#加单位
#加一个分类变量
dat$Age_c=as.factor(ifelse(dat$Age<50,"<50y", ifelse(dat$Age<=60,"51-60y",">60y")))
##加标签,以及P值
dat$OS=factor(dat$OS,levels = c(0,1,2),labels = c("alive","dead","P-value"))
outcome=dat$OS
rndr <- function(x, name, ...) {
if (length(x) == 0) {
y <- dat[[name]]
s <- rep("", length(render.default(x=y, name=name, ...)))
if (is.numeric(y)) {
p <- t.test(y ~ outcome)$p.value
} else {
p <- chisq.test(table(y, droplevels(outcome)))$p.value
}
s[2] <- sub("<", "<", format.pval(p, digits=3, eps=0.001))
s
} else {
render.default(x=x, name=name, ...)
}
}
rndr.strat <- function(label, n, ...) {
ifelse(n==0, label, render.strat.default(label, n, ...))
}
画三线图,~后选择需要显示的列的统计值;|后选分组;data=选择数据,render.continuous显示细节,可选
c(.="Mean (SD)", .="Median [Min, Max]",.="Median [Q1, Q3]",.="Median [IQR]");overall=F:通体数值不显示。
table1(~Gender+Race+Age_c+Age+cancer_status+histological_type+stage_event_pathologic_stage+TNM|OS,data = dat,
render.continuous=c(.="Mean (SD)"),droplevels = F,render = rndr,render.strat=rndr.strat,
overall = F)