臨床晶默、生信發(fā)文都需要的Table 1

基線表顯示了研究中包含的研究對象的特征。根據(jù)研究設(shè)計(jì)航攒,它們可能有特定目的磺陡,但通常它們顯示所包含的人群是否符合研究的資格標(biāo)準(zhǔn)。它們還表明結(jié)果可以推廣到哪些人群漠畜。在病例對照研究中币他,基線表可以確認(rèn)成功匹配或表明組之間的差異。在隨機(jī)對照試驗(yàn) (RCT) 中憔狞,隨機(jī)化過程旨在分配可能影響結(jié)果的組參與者特征蝴悉;基線表將表明隨機(jī)化是否導(dǎo)致成功平衡。在可行性研究中瘾敢,基線表也可能表明哪些人群愿意參與研究設(shè)計(jì)拍冠。在對單個研究進(jìn)行薈萃分析時,可能需要多個基線表簇抵,其中應(yīng)為組合數(shù)據(jù)集以及每個單個研究提供特征庆杜,以便評估人群中的同質(zhì)性

image

前言說了這么多,其實(shí)就是如上圖所示(表來源于The Lancet Regional Health – Europe碟摆,https://doi.org/10.1016/j.lanepe.2021.100096)晃财,其中數(shù)據(jù)主要分為兩大類,分類變量(例如性別)和連續(xù)變量(例如臨床指標(biāo)膽紅素焦履、血紅蛋白......)

1. 問題

問題1: 這么多統(tǒng)計(jì)量拓劝,P值計(jì)算需要注意什么?
答: 一句話總結(jié):
連續(xù)變量需要區(qū)分方差是否齊嘉裤,是否為正態(tài)分布郑临,兩組比較還是多組比較;
分類變量需要區(qū)分二分類變量(性別(男/女)****)還是多分類變量(血型(A屑宠、B厢洞、O、AB))典奉。
根據(jù)不同的統(tǒng)計(jì)結(jié)果躺翻,就可以選擇不同的統(tǒng)計(jì)方法了(t檢驗(yàn),方差分析卫玖,秩和檢驗(yàn)公你,kruskal檢驗(yàn),卡方檢驗(yàn)假瞬,fisher檢驗(yàn)等等

問題2: 怎么選陕靠?你能幫幫我嗎狼犯?
答: 一圖搞定

image

問題3: 太復(fù)雜了集灌,不僅得一個一個計(jì)算,還得考慮不同的算法昔头,你還能幫幫我嗎绎狭?
答: 這也就引出了今天的主角凫佛,自動生成Table 1的神器

2. 正文

tableone包是一個 R 包芙扎,它簡化了“表1”的構(gòu)建负乡,即在生物醫(yī)學(xué)研究論文中常見的患者基線特征表。這些包可以匯總一個表中混合的連續(xù)變量和分類變量益兄。分類變量可以概括為計(jì)數(shù)和/或百分比锻梳。連續(xù)變量可以用“正態(tài)”方式(平均值和標(biāo)準(zhǔn)差)或“非正態(tài)”方式(中位數(shù)和四分位距)來概括

2.1 包的安裝與加載

install.packages("tableone") #安裝包
library("tableone") #載入包

2.2 數(shù)據(jù)介紹

數(shù)據(jù)主要來源于survival包中的pbc數(shù)據(jù)集,里邊包含了患者的生存時間生存狀態(tài)以及其他臨床指標(biāo)的一些數(shù)據(jù)偏塞,可以通過以下代碼在R中加載唱蒸,也可以后臺回復(fù)Tableone獲取這個數(shù)據(jù)

library(survival) # 需要安裝
data(pbc)

2.3 最簡單的用法

CreateTableOne(data = pbc)
#此處為結(jié)果邦鲫,無需運(yùn)行                      
Overall          
n                        418          
id (mean (SD))        209.50 (120.81) 
time (mean (SD))     1917.78 (1104.67)
status (mean (SD))      0.83 (0.96)   
trt (mean (SD))         1.49 (0.50)   
age (mean (SD))        50.74 (10.45)  
sex = f (%)              374 (89.5)   
ascites (mean (SD))     0.08 (0.27)   
hepato (mean (SD))      0.51 (0.50)   
spiders (mean (SD))     0.29 (0.45)   
edema (mean (SD))       0.10 (0.25)   
bili (mean (SD))        3.22 (4.41)   
chol (mean (SD))      369.51 (231.94) 
albumin (mean (SD))     3.50 (0.42)   
copper (mean (SD))     97.65 (85.61)  
alk.phos (mean (SD)) 1982.66 (2140.39)
ast (mean (SD))       122.56 (56.70)  
trig (mean (SD))      124.70 (65.15)  
platelet (mean (SD))  257.02 (98.33)  
protime (mean (SD))    10.73 (1.02)

但是灸叼,這還是和我們之前看見的表還是有差距的:

  1. 沒有分組與P值
  2. 類似于status這種分類變量,它還是用均值(標(biāo)準(zhǔn)差)來表示的庆捺,這肯定不符合要求

因此需要找出分類變量和連續(xù)變量

2.4 分類變量的操作

大多數(shù)分類變量都是用數(shù)字編碼的古今,所以我們要么必須將它們轉(zhuǎn)換為數(shù)據(jù)集中的因子,要么使用 factorVars 參數(shù)即時轉(zhuǎn)換它們滔以。此外捉腥,最好通過 vars 參數(shù)指定要匯總的變量,并排除 ID 變量你画。什么是因子抵碟,其實(shí)就是分組,二分類就是2個因子坏匪,三分類就是3個因子

## 查看變量類型
dput(names(pbc))
## 此處為結(jié)果拟逮,無需運(yùn)行
c("id", "time", "status", "trt", "age", "sex", "ascites", "hepato", 
  "spiders", "edema", "bili", "chol", "albumin", "copper", "alk.phos", 
  "ast", "trig", "platelet", "protime", "stage")

然后把分類變量挑出來

## 所有變量
myVars <- c("time", "status", "trt", "age", "sex", "ascites", "hepato",
            "spiders", "edema", "bili", "chol", "albumin", "copper", "alk.phos",
            "ast", "trig", "platelet", "protime", "stage")
## 分類變量
catVars <- c("status", "trt", "ascites", "hepato",
             "spiders", "edema", "stage")
## 創(chuàng)建Table one
tab2 <- CreateTableOne(vars = myVars, data = pbc, factorVars = catVars)
tab2
#此處為結(jié)果,無需運(yùn)行                
Overall          
n                        418          
time (mean (SD))     1917.78 (1104.67)
status (%)                            
0                     232 (55.5)   
1                      25 ( 6.0)   
2                     161 (38.5)   
trt = 2 (%)              154 (49.4)   
age (mean (SD))        50.74 (10.45)  
sex = f (%)              374 (89.5)   
ascites = 1 (%)           24 ( 7.7)   
hepato = 1 (%)           160 (51.3)   
spiders = 1 (%)           90 (28.8)   
edema (%)                             
0                     354 (84.7)   
0.5                    44 (10.5)   
1                      20 ( 4.8)   
bili (mean (SD))        3.22 (4.41)   
chol (mean (SD))      369.51 (231.94) 
albumin (mean (SD))     3.50 (0.42)   
copper (mean (SD))     97.65 (85.61)  
alk.phos (mean (SD)) 1982.66 (2140.39)
ast (mean (SD))       122.56 (56.70)  
trig (mean (SD))      124.70 (65.15)  
platelet (mean (SD))  257.02 (98.33)  
protime (mean (SD))    10.73 (1.02)   
stage (%)                             
1                      21 ( 5.1)   
2                      92 (22.3)   
3                     155 (37.6)   
4                     144 (35.0)

這分組是正常了适滓,但是還沒有分組和P值敦迄,而且在文章中不同分類一般是單獨(dú)一列的。

如果要顯示所有級別凭迹,可以使用 print() 方法的 showAllLevels 參數(shù)

print(tab2, showAllLevels = TRUE, formatOptions = list(big.mark = ","))
# 此處為結(jié)果罚屋,無需運(yùn)行             
level Overall            
n                               418           
time (mean (SD))           1,917.78 (1,104.67)
status (%)           0          232 (55.5)    
1           25 ( 6.0)    
2          161 (38.5)    
trt (%)              1          158 (50.6)    
2          154 (49.4)    
age (mean (SD))               50.74 (10.45)   
sex (%)              m           44 (10.5)    
f          374 (89.5)    
ascites (%)          0          288 (92.3)    
1           24 ( 7.7)    
hepato (%)           0          152 (48.7)    
1          160 (51.3)    
spiders (%)          0          222 (71.2)    
1           90 (28.8)    
edema (%)            0          354 (84.7)    
0.5         44 (10.5)    
1           20 ( 4.8)    
bili (mean (SD))               3.22 (4.41)    
chol (mean (SD))             369.51 (231.94)  
albumin (mean (SD))            3.50 (0.42)    
copper (mean (SD))            97.65 (85.61)   
alk.phos (mean (SD))       1,982.66 (2,140.39)
ast (mean (SD))              122.56 (56.70)   
trig (mean (SD))             124.70 (65.15)   
platelet (mean (SD))         257.02 (98.33)   
protime (mean (SD))           10.73 (1.02)    
stage (%)            1           21 ( 5.1)    
2           92 (22.3)    
3          155 (37.6)    
4          144 (35.0)

2.5 連續(xù)變量正態(tài)與非正態(tài)分布描述是不一樣的

除了時間、年齡嗅绸、白蛋白和血小板外脾猛,大多數(shù)連續(xù)變量看起來都高度偏斜(生物標(biāo)志物通常以強(qiáng)正偏態(tài)分布)。一般來說鱼鸠,正態(tài)分布數(shù)據(jù)使用均值(標(biāo)準(zhǔn)差)猛拴,偏態(tài)分布采用中位數(shù)(上四分位數(shù)喉刘,下四分位數(shù))進(jìn)行描述會獲得同行評審的認(rèn)可。因此漆弄,在 print() 方法中定義非正態(tài)分布的變量睦裳,即可完成。如果設(shè)置 nonnormal = TRUE撼唾,那么所有變量都以“非正態(tài)”的方式匯總

biomarkers <- c("bili","chol","copper","alk.phos","ast","trig","protime")

2.6 兩組之間進(jìn)行統(tǒng)計(jì)檢驗(yàn)

就像例子所示廉邑,我們一般根據(jù)實(shí)驗(yàn)?zāi)康模瑢⒒颊叻纸M并逐組統(tǒng)計(jì)檢驗(yàn)倒谷。這也很簡單蛛蒙。按暴露類別(數(shù)據(jù)中為trt列)分組可能是最常見的方式。因此渤愁,代碼如下牵祟,主要設(shè)定strata參數(shù)為"trt",分類參數(shù)為factorVars:

tab3 <- CreateTableOne(vars = myVars, strata = "trt" , data = pbc, factorVars = catVars)
# 此處為結(jié)果抖格,無需運(yùn)行
Stratified by trt
level 1                           2                           p      test   
n                                  158                         154                                  
time (mean (SD))              2,015.62 (1,094.12)         1,996.86 (1,155.93)          0.883        
status (%)              0           83 ( 52.5)                  85 ( 55.2)             0.894        
1           10 (  6.3)                   9 (  5.8)                          
2           65 ( 41.1)                  60 ( 39.0)                          
trt (%)                 1          158 (100.0)                   0 (  0.0)            <0.001        
2            0 (  0.0)                 154 (100.0)                          
age (mean (SD))                  51.42 (11.01)               48.58 (9.96)              0.018        
sex (%)                 m           21 ( 13.3)                  15 (  9.7)             0.421        
f          137 ( 86.7)                 139 ( 90.3)                          
ascites (%)             0          144 ( 91.1)                 144 ( 93.5)             0.567        
1           14 (  8.9)                  10 (  6.5)                          
hepato (%)              0           85 ( 53.8)                  67 ( 43.5)             0.088        
1           73 ( 46.2)                  87 ( 56.5)                          
spiders (%)             0          113 ( 71.5)                 109 ( 70.8)             0.985        
1           45 ( 28.5)                  45 ( 29.2)                          
edema (%)               0          132 ( 83.5)                 131 ( 85.1)             0.877        
0.5         16 ( 10.1)                  13 (  8.4)                          
1           10 (  6.3)                  10 (  6.5)                          
bili (median [IQR])               1.40 [0.80, 3.20]           1.30 [0.72, 3.60]        0.842 nonnorm
chol (median [IQR])             315.50 [247.75, 417.00]     303.50 [254.25, 377.00]    0.544 nonnorm
albumin (mean (SD))               3.52 (0.44)                 3.52 (0.40)              0.874        
copper (median [IQR])            73.00 [40.00, 121.00]       73.00 [43.00, 139.00]     0.717 nonnorm
alk.phos (median [IQR])       1,214.50 [840.75, 2,028.00] 1,283.00 [922.50, 1,949.75]  0.812 nonnorm
ast (median [IQR])              111.60 [76.73, 151.51]      117.40 [83.78, 151.90]     0.459 nonnorm
trig (median [IQR])             106.00 [84.50, 146.00]      113.00 [84.50, 155.00]     0.370 nonnorm
platelet (mean (SD))            258.75 (100.32)             265.20 (90.73)             0.555        
protime (median [IQR])           10.60 [10.03, 11.00]        10.60 [10.00, 11.40]      0.588 nonnorm
stage (%)               1           12 (  7.6)                   4 (  2.6)             0.201        
2           35 ( 22.2)                  32 ( 20.8)                          
3           56 ( 35.4)                  64 ( 41.6)                          
4           55 ( 34.8)                  54 ( 35.1)

如果需要顯示標(biāo)準(zhǔn)均值差(SMD)诺苹,僅需設(shè)置參數(shù)即可

print(tab3, nonnormal = biomarkers, exact = "stage", smd = TRUE)
# 結(jié)果略

但是,這些結(jié)果都是在R中雹拄,復(fù)制粘貼的話收奔,操作不方便,而且還需要后期對齊滓玖,因此推薦輸出為csv坪哄,代碼如下:

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

2.7 簡潔版

上面看著還挺復(fù)雜,其實(shí)實(shí)際使用的話僅需要這么幾步

library(tableone)
library(survival)
data(pbc)
#設(shè)置所有變量
myVars <- c("time", "status", "trt", "age", "sex", "ascites", "hepato",
            "spiders", "edema", "bili", "chol", "albumin", "copper", "alk.phos",
            "ast", "trig", "platelet", "protime", "stage")
## 設(shè)置分類變量
catVars <- c("status", "trt", "ascites", "hepato",
             "spiders", "edema", "stage")
for (i in catVars) {
    pbc[,i]<-as.factor(pbc[,i])
}
## 設(shè)置偏態(tài)分布變量
biomarkers <- c("bili","chol","copper","alk.phos","ast","trig","protime")
tab3 <- CreateTableOne(vars = myVars, strata = "trt" , data = pbc, factorVars = catVars)
tab3Mat <- print(tab3, nonnormal = biomarkers, exact = "stage", quote = FALSE, noSpaces = TRUE, printToggle = FALSE)
## 保存為csv格式文件
write.csv(tab3Mat, file = "myTable.csv")

在Excel或者WPS中就可以優(yōu)雅地打開了

image

最后一個常見問題势篡,就是這個技能翩肌、代碼是否有必要學(xué)習(xí)?

我認(rèn)為其實(shí)就像過河一樣禁悠,有的河一輩子就過一次念祭,那么游過去就行了;而有的時候每隔幾天就需要過一次河绷蹲,那么為什么不花點(diǎn)時間造個橋棒卷,平平坦坦走過去呢

感謝觀看,如果有用還請點(diǎn)贊祝钢,收藏比规,轉(zhuǎn)發(fā)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拦英,一起剝皮案震驚了整個濱河市蜒什,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疤估,老刑警劉巖灾常,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霎冯,死亡現(xiàn)場離奇詭異,居然都是意外死亡钞瀑,警方通過查閱死者的電腦和手機(jī)沈撞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雕什,“玉大人缠俺,你說我怎么就攤上這事〈叮” “怎么了壹士?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長偿警。 經(jīng)常有香客問我躏救,道長,這世上最難降的妖魔是什么螟蒸? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任盒使,我火速辦了婚禮,結(jié)果婚禮上尿庐,老公的妹妹穿的比我還像新娘忠怖。我一直安慰自己呢堰,他們只是感情好抄瑟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枉疼,像睡著了一般皮假。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骂维,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天惹资,我揣著相機(jī)與錄音,去河邊找鬼航闺。 笑死褪测,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的潦刃。 我是一名探鬼主播侮措,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乖杠!你這毒婦竟也來了分扎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤胧洒,失蹤者是張志新(化名)和其女友劉穎畏吓,沒想到半個月后墨状,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菲饼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年肾砂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏悦。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡通今,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肛根,到底是詐尸還是另有隱情辫塌,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布派哲,位于F島的核電站臼氨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芭届。R本人自食惡果不足惜储矩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望褂乍。 院中可真熱鬧持隧,春花似錦、人聲如沸逃片。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褥实。三九已至呀狼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間损离,已是汗流浹背哥艇。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留僻澎,地道東北人貌踏。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像窟勃,于是被迫代替她去往敵國和親祖乳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容