今回は疫学などヒトを対象とした研究で対象者の特性として、主な変数の要約することが多くありますが、その表1(table1)を描き、csvとして出力できる便利な関数の紹介です。
その便利な関数はCreateTableOne()関数です。(パッケージはtableoneと言うものです)
早速、インストールします
install.packages("tableone") library(tableone)
今回の模擬データ(Indian Liver Patients Dataset(https://archive.ics.uci.edu/ml/datasets/ILPD+(Indian+Liver+Patient+Dataset))から入手可能)を読み込みます。
ilpd <- read.csv("ILPD.csv", header=T) head(ilpd) ## age sex Tbil Dbil ALP ALT AST TP alb AG liver ## 1 65 Female 0.7 0.1 187 16 18 6.8 3.3 0.90 1 ## 2 62 Male 10.9 5.5 699 64 100 7.5 3.2 0.74 1 ## 3 62 Male 7.3 4.1 490 60 68 7.0 3.3 0.89 1 ## 4 58 Male 1.0 0.4 182 14 20 6.8 3.4 1.00 1 ## 5 72 Male 3.9 2.0 195 27 59 7.3 2.4 0.40 1 ## 6 46 Male 1.8 0.7 208 19 14 7.6 4.4 1.30 1
前準備として、表示したい変数(listvar)と表示したい変数の中でカテゴリ変数となるもの(listcat)を選びます。
ilpd$liver <- factor(ilpd$liver) listvar <- c("age", "Tbil", "Dbil", "ALP", "ALT", "AST", "TP", "alb", "liver") listcat <- c("liver")
今回は性別で層別しますので、strataに"sex" を指定しています。
table1 <- CreateTableOne(vars = listvar, strata = "sex", data = ilpd, factorVars = listcat) table1 ## Stratified by sex ## Female Male p test ## n 142 441 ## age (mean (sd)) 43.13 (15.90) 45.27 (16.27) 0.173 ## Tbil (mean (sd)) 2.32 (4.86) 3.61 (6.56) 0.031 ## Dbil (mean (sd)) 0.99 (2.40) 1.65 (2.91) 0.015 ## ALP (mean (sd)) 302.34 (300.33) 286.79 (221.59) 0.508 ## ALT (mean (sd)) 54.24 (94.02) 89.24 (202.44) 0.047 ## AST (mean (sd)) 69.04 (127.77) 123.07 (323.22) 0.053 ## TP (mean (sd)) 6.65 (1.13) 6.43 (1.06) 0.031 ## alb (mean (sd)) 3.27 (0.83) 3.10 (0.78) 0.024 ## liver = 2 (%) 50 (35.2) 117 (26.5) 0.060
さらに詳しい結果はカテゴリ変数は$CatTableに、連続変数は$ContTableに格納されている情報をsummary()関数で表示することができる。
summary(table1$CatTable) ## sex: Female ## var n miss p.miss level freq percent cum.percent ## liver 142 0 0.0 1 92 64.8 64.8 ## 2 50 35.2 100.0 ## ## ----------------------------------------------------------- ## sex: Male ## var n miss p.miss level freq percent cum.percent ## liver 441 0 0.0 1 324 73.5 73.5 ## 2 117 26.5 100.0 ## ## ## p-values ## pApprox pExact ## liver 0.05966585 0.05460083 ## ## Standardize mean differences ## 1 vs 2 ## liver 0.1887438
summary(table1$ContTable) ## sex: Female ## n miss p.miss mean sd median p25 p75 min max skew kurt ## age 142 0 0 43.13 15.90 45.0 31.0 53.0 7.0 85.0 0.14 -0.15 ## Tbil 142 0 0 2.32 4.86 0.8 0.7 1.1 0.5 27.7 3.99 15.74 ## Dbil 142 0 0 0.99 2.40 0.2 0.2 0.4 0.1 12.8 3.83 14.37 ## ALP 142 0 0 302.34 300.33 194.5 165.0 293.0 63.0 1896.0 3.34 11.75 ## ALT 142 0 0 54.24 94.02 26.0 20.0 46.8 10.0 790.0 5.14 31.85 ## AST 142 0 0 69.04 127.77 30.0 21.0 57.0 10.0 1050.0 4.91 29.18 ## TP 142 0 0 6.65 1.13 6.8 5.9 7.5 3.6 9.2 -0.32 -0.35 ## alb 142 0 0 3.27 0.83 3.3 2.8 3.9 1.0 5.5 -0.16 -0.19 ## ----------------------------------------------------------- ## sex: Male ## n miss p.miss mean sd median p25 p75 min max skew kurt ## age 441 0 0 45.3 16.27 45.0 33.0 60.0 4.0 90.0 -0.083 -0.65 ## Tbil 441 0 0 3.6 6.56 1.2 0.8 2.9 0.4 75.0 4.935 37.37 ## Dbil 441 0 0 1.6 2.91 0.4 0.2 1.5 0.1 19.7 3.081 10.69 ## ALP 441 0 0 286.8 221.59 215.0 179.0 298.0 75.0 2110.0 3.891 20.92 ## ALT 441 0 0 89.2 202.44 38.0 25.0 65.0 10.0 2000.0 6.104 42.61 ## AST 441 0 0 123.1 323.22 46.0 28.0 92.0 11.0 4929.0 9.775 125.59 ## TP 441 0 0 6.4 1.06 6.5 5.7 7.1 2.7 9.6 -0.301 0.49 ## alb 441 0 0 3.1 0.78 3.0 2.6 3.7 0.9 5.5 -0.022 -0.44 ## ## p-values ## pNormal pNonNormal ## age 0.17262095 1.324473e-01 ## Tbil 0.03111161 1.317742e-06 ## Dbil 0.01526587 4.485112e-07 ## ALP 0.50758269 5.626061e-02 ## ALT 0.04691661 1.224501e-06 ## AST 0.05253525 4.360095e-07 ## TP 0.03143463 2.830417e-02 ## alb 0.02351545 2.130897e-02 ## ## Standardize mean differences ## 1 vs 2 ## age 0.13252583 ## Tbil 0.22353835 ## Dbil 0.24609267 ## ALP 0.05891688 ## ALT 0.22174688 ## AST 0.21984219 ## TP 0.20468565 ## alb 0.21578393
正規分布していない変数についてはnon-normalであることを指定して、カテゴリ変数で全ての階級を表示したい場合には、cramVarsで表示することができる。
print(table1, nonnormal = c("Tbili","Dbil","ALP","ALT","AST"), cramVars = "liver") ## Stratified by sex ## Female Male p ## n 142 441 ## age (mean (sd)) 43.13 (15.90) 45.27 (16.27) 0.173 ## Tbil (mean (sd)) 2.32 (4.86) 3.61 (6.56) 0.031 ## Dbil (median [IQR]) 0.20 [0.20, 0.40] 0.40 [0.20, 1.50] <0.001 ## ALP (median [IQR]) 194.50 [165.00, 293.00] 215.00 [179.00, 298.00] 0.056 ## ALT (median [IQR]) 26.00 [20.00, 46.75] 38.00 [25.00, 65.00] <0.001 ## AST (median [IQR]) 30.00 [21.00, 57.00] 46.00 [28.00, 92.00] <0.001 ## TP (mean (sd)) 6.65 (1.13) 6.43 (1.06) 0.031 ## alb (mean (sd)) 3.27 (0.83) 3.10 (0.78) 0.024 ## liver = 1/2 (%) 92/50 (64.8/35.2) 324/117 (73.5/26.5) 0.060
書き出しには、quote=Tとして、excelに貼り付ける。(Rpubs「tableone: 医学研究で必要な"表1"を作成するRパッケージ」(URL: https://rpubs.com/kaz_yos/tableone-demo-j)をご参照ください)
参考ページ
- Rpubs「tableone: 医学研究で必要な"表1"を作成するRパッケージ」(URL: https://rpubs.com/kaz_yos/tableone-demo-j)
- R bloggers 「Table 1 and the Characteristics of Study Population」(URL: http://www.r-bloggers.com/table-1-and-the-characteristics-of-study-population/)