R|tableone 快速繪制文章“表一”-基線特征三線表


首發於“生信補給站” :https://mp.weixin.qq.com/s/LJfgxbTqsp8egnQxEI0nJg

生物醫學或其他研究論文中的“表一”多為基線特征的描述性統計。使用R單獨進行統計,匯總,然后結果復制到excel表中,耗時耗力且易錯!

tableone包“應運而生”,可以非常簡單快捷的解決這個問題,重點是學習成本很低,大概幾分鍾?

 

一 載入數據,R包

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

img

 

二 單組匯總

1 匯總整個數據集

對pbc整個數據集進行描述匯總,使用CreateTableOne()即可

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

img

由於數據中的分類變量是數值形式,所以分類變量展示的也是均值(標准差)。

 

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)

img

showAllLevels = TRUE 會展示分類變量的所有分類因子的結果。

此處隨意選擇一些變量進行功能展示, 分類變量顯示計數和百分比 。

 

3 非正態分布變量

由於默認連續變量呈正態分布,因此上面的連續變量均表示為均數+標准差。

實際數據中的非正態分布數據,可通過nonnormal指定,則此變量展示為中位數(四分位數)。

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

img

可見"bili","ast","copper"均用中位數(四分位數)表示;如果設置nonnormal = TRUE,則所有變量都按非正態分布處理。

 

三 多組匯總

1 分組統計

實際結果中,通常需要對數據集按照某個變量的分組進行匯總。下面展示使用trt進行分組匯總:

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

img

注意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")

img

 

四 導出結果

write.csv一鍵導出結果

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

img

隨便套用了一個表格格式,可以在excel中弄成喜(文)歡(章)的樣式,這個自己發

 

參考資料:

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

 

PS:有個交流的討論組,想溝通交流的,后台回復”入群“。

◆ ◆ ◆ ◆ ◆

精心整理(含圖版)|R語言生信分析,可視化,你要的全拿走,建議收藏!

img


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM