#常規(guī)清空,加載包
rm(list = ls())
library(table1)
library(lubridate)
setwd("D:\\生信課題\\R語言畫圖\\R語言統(tǒng)計與分析\\R語言下載TGCA練習(xí)本")
## 讀取數(shù)據(jù),csv為例,row.names=1設(shè)置的是第一列為數(shù)據(jù)的名稱。header=T是指第一行為數(shù)據(jù)的列名。
check.names=F當(dāng)你的列名是以數(shù)字開頭的時候,比如有的時候數(shù)據(jù)是時間相關(guān)的,6:00, 8:00, 10:00等,會在最前面顯示一個x并且冒號會給你替換成點(6:00→x6.00)設(shè)置了檢查名稱為False之后就不會有這個問題。
dat=read.csv(file="COAD_survival.csv",row.names=1,header=T,check.names=F)
attach(dat)?# 匹配數(shù)據(jù),R以下操作均根據(jù)這個數(shù)據(jù)分析?
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, ...))
}
畫三線圖,~后選擇需要顯示的列的統(tǒng)計值;|后選分組;data=選擇數(shù)據(jù),render.continuous顯示細節(jié),可選
c(.="Mean (SD)", .="Median [Min, Max]",.="Median [Q1, Q3]",.="Median [IQR]");overall=F:通體數(shù)值不顯示。
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)