Day2 - tableone | 2023-09-01
Jinseob Kim
본 자료는 데이터셋의 변수를 하나의 테이블로 요약하는 방법에 대해 알아볼 것이다. tableone 패키지를 이용하면 효율적으로 논문에 들어갈 table1을 만들 수 있다.
tableone
은 의학 연구 논문에서 볼 수 있는 table1을 구성하는 데 사용되는 패키지로, 한 테이블 내에 혼합된 범주형 변수와 연속형 변수를 모두 요약할 수 있고 사용법이 매우 간단하다는 장점이 있다.
CreateTableOne() 함수를 사용하여 테이블을 만들 수 있다. fread
를 통해 데이터를 불러와 간단한 테이블을 만들어보자. 데이터는 09-15년 공단 건강검진 데이터에서 실습용으로 32명을 뽑은 자료이며, 자세한 내용은 용어-건강보험데이터를 참고하자.
CreateTableOne() 함수를 사용해 간단한 테이블을 만들어 보자.
Overall | |
---|---|
n | 1644 |
EXMD_BZ_YYYY (mean (SD)) | 2012.08 (1.99) |
RN_INDI (mean (SD)) | 490782.25 (290056.68) |
HME_YYYYMM (mean (SD)) | 201216.18 (199.11) |
Q_PHX_DX_STK (mean (SD)) | 0.01 (0.11) |
Q_PHX_DX_HTDZ (mean (SD)) | 0.02 (0.15) |
CreateTableOne() 함수에는 다양한 옵션이 존재한다. 세부적인 옵션 설정을 통해 원하는 table1을 만들 수 있다. 주요 옵션은 다음과 같다.
CreateTableOne
NA
를 하나의 범주로 포함할지 여부옵션에 대한 자세한 설명은 예시를 통해 다루도록 하겠다.
factorVars 인자를 사용하여 범주형 변수를 지정할 수 있다. 이때 vars 인자를 통해 전체 데이터 셋 중 테이블에 들어갈 변수를 설정할 수 있고, 지정하지 않을 시 데이터 셋의 모든 변수가 포함된다.
Overall | |
---|---|
n | 1644 |
HGHT (mean (SD)) | 164.55 (9.19) |
WGHT (mean (SD)) | 65.10 (12.53) |
BMI (mean (SD)) | 23.97 (3.39) |
Q_PHX_DX_STK = 1 (%) | 12 (1.1) |
Q_PHX_DX_HTDZ = 1 (%) | 26 (2.4) |
범주형 변수로 설정한 컬럼의 요약값이 mean(sd)에서 n(percentage)로 바뀐 것을 볼 수 있다.
두 개의 범주가 있는 범주형 변수의 경우, 두 번째 범주의 요약값만 출력된다. 예를 들어 0과 1의 범주가 있을 때, 범주1의 개수와 백분율이 출력된다. 이는 옵션 설정을 통해 전체 범주의 요약값을 출력하도록 변경할 수 있다.
3개 이상의 범주가 있을 때에는 모든 범주의 값이 요약되며, 백분율은 누락된 값을 제외한 후 계산된다.
strata 인자를 설정하여 그룹별 연산을 할 수 있다. strata는 dplyr 패키지의 group_by() 함수와 유사하며, 그룹 연산을 할 변수를 지정하여 사용할 수 있다.
1 | 2 | 3 | p | test | |
---|---|---|---|---|---|
n | 995 | 256 | 391 | ||
HGHT (mean (SD)) | 160.67 (8.34) | 168.83 (6.45) | 171.61 (7.09) | <0.001 | |
WGHT (mean (SD)) | 61.17 (11.08) | 70.09 (10.72) | 71.76 (13.07) | <0.001 | |
BMI (mean (SD)) | 23.68 (3.41) | 24.57 (2.95) | 24.31 (3.52) | <0.001 | |
Q_PHX_DX_STK = 1 (%) | 11 (1.8) | 1 (0.5) | 0 (0.0) | 0.051 | |
Q_PHX_DX_HTDZ = 1 (%) | 18 (2.9) | 5 (2.6) | 3 (1.1) | 0.287 |
연속형 변수의 경우, 기본적으로 one-way ANOVA test가 적용되며 nonnormal일 경우 옵션 설정을 통해 Kruskal–Wallis one-way ANOVA test를 적용할 수 있다.
범주형 변수의 경우, 기본적으로 chisq-test가 적용되며 print 함수의 exact 옵션 설정을 통해 fisher-test를 적용할 수 있다.
CreateTableOne() 함수를 사용하여 테이블을 만든 후, print 명령어로 세부 옵션을 지정할 수 있다. 주요 옵션은 다음과 같다.
print
범주형 변수에서 모든 범주의 요약값을 확인하려면 ShowAllLevels 또는 cramVars 옵션을 사용한다. ShowAllLevels = T 를 설정하거나 cramVars 옵션에 원하는 변수명을 지정하여 사용할 수 있다.
level | Overall | |
---|---|---|
n | 1644 | |
HGHT (mean (SD)) | 164.55 (9.19) | |
WGHT (mean (SD)) | 65.10 (12.53) | |
BMI (mean (SD)) | 23.97 (3.39) | |
Q_PHX_DX_STK (%) | 0 | 1059 (98.9) |
1 | 12 ( 1.1) | |
Q_PHX_DX_HTDZ (%) | 0 | 1052 (97.6) |
1 | 26 ( 2.4) |
Overall | |
---|---|
n | 1644 |
HGHT (mean (SD)) | 164.55 (9.19) |
WGHT (mean (SD)) | 65.10 (12.53) |
BMI (mean (SD)) | 23.97 (3.39) |
Q_PHX_DX_STK = 0/1 (%) | 1059/12 (98.9/1.1) |
Q_PHX_DX_HTDZ = 1 (%) | 26 (2.4) |
비모수통계를 사용하는 연속형 변수에는 nonnormal 옵션을 설정한다. nonnormal 설정 시 mean(sd)에서 median(IQR)로 요약값이 변경된다.
Overall | |
---|---|
n | 1644 |
HGHT (mean (SD)) | 164.55 (9.19) |
WGHT (mean (SD)) | 65.10 (12.53) |
BMI (mean (SD)) | 23.97 (3.39) |
Q_PHX_DX_STK = 1 (%) | 12 (1.1) |
Q_PHX_DX_HTDZ = 1 (%) | 26 (2.4) |
exact 옵션을 통해 fisher-test를 진행할 범주형 변수를 설정할 수 있다. 범주형 변수는 기본적으로 chisq-test가 적용되며, exact 옵션에 fisher-test를 적용할 변수를 지정하여 사용할 수 있다.
1 | 2 | 3 | p | test | |
---|---|---|---|---|---|
n | 995 | 256 | 391 | ||
HGHT (mean (SD)) | 160.67 (8.34) | 168.83 (6.45) | 171.61 (7.09) | <0.001 | |
WGHT (mean (SD)) | 61.17 (11.08) | 70.09 (10.72) | 71.76 (13.07) | <0.001 | |
BMI (mean (SD)) | 23.68 (3.41) | 24.57 (2.95) | 24.31 (3.52) | <0.001 | |
Q_PHX_DX_STK = 1 (%) | 11 (1.8) | 1 (0.5) | 0 (0.0) | 0.045 | exact |
Q_PHX_DX_HTDZ = 1 (%) | 18 (2.9) | 5 (2.6) | 3 (1.1) | 0.281 | exact |
smd 옵션을 통해 smd(standardized mean difference)를 table1에 포함할 수 있다. default는 FALSE이고, smd=TRUE 설정 시 각 변수의 smd 값이 출력된다.
1 | 2 | 3 | p | test | SMD | |
---|---|---|---|---|---|---|
n | 995 | 256 | 391 | |||
HGHT (mean (SD)) | 160.67 (8.34) | 168.83 (6.45) | 171.61 (7.09) | <0.001 | 0.972 | |
WGHT (mean (SD)) | 61.17 (11.08) | 70.09 (10.72) | 71.76 (13.07) | <0.001 | 0.611 | |
BMI (mean (SD)) | 23.68 (3.41) | 24.57 (2.95) | 24.31 (3.52) | <0.001 | 0.180 | |
Q_PHX_DX_STK = 1 (%) | 11 (1.8) | 1 (0.5) | 0 (0.0) | 0.051 | 0.137 | |
Q_PHX_DX_HTDZ = 1 (%) | 18 (2.9) | 5 (2.6) | 3 (1.1) | 0.287 | 0.084 |
summary
함수를 쓰면 누락값을 포함한 table1의 자세한 정보를 알 수 있다. 연속형 변수의 값들이 먼저 출력되며 그 다음으로 범주형 변수의 요약값이 출력된다.
### Summary of continuous variables ###
strata: Overall
n miss p.miss mean sd median p25 p75 min max skew kurt
HGHT 1644 0 0 165 9 165 158 171 134 188 -0.2 -0.3
WGHT 1644 0 0 65 13 64 56 73 31 118 0.7 1.0
BMI 1644 0 0 24 3 24 22 26 12 37 0.4 0.4
=======================================================================================
### Summary of categorical variables ###
strata: Overall
var n miss p.miss level freq percent cum.percent
Q_PHX_DX_STK 1644 573 34.9 0 1059 98.9 98.9
1 12 1.1 100.0
Q_PHX_DX_HTDZ 1644 566 34.4 0 1052 97.6 97.6
1 26 2.4 100.0
앞에서 만든 table1에서 연속형 변수와 범주형 변수를 구분하여 출력할 수 있다. “$”를 사용하여 연속형 변수는 ConTable, 범주형 변수는 CaTable을 설정하면 해당 변수를 따로 출력할 수 있다.
1 | 2 | 3 | p | test | |
---|---|---|---|---|---|
n | 995 | 256 | 391 | ||
Q_PHX_DX_STK = 1 (%) | 11 (1.8) | 1 (0.5) | 0 (0.0) | 0.051 | |
Q_PHX_DX_HTDZ = 1 (%) | 18 (2.9) | 5 (2.6) | 3 (1.1) | 0.287 |
1 | 2 | 3 | p | test | |
---|---|---|---|---|---|
n | 995 | 256 | 391 | ||
HGHT (mean (SD)) | 160.67 (8.34) | 168.83 (6.45) | 171.61 (7.09) | <0.001 | |
WGHT (mean (SD)) | 61.17 (11.08) | 70.09 (10.72) | 71.76 (13.07) | <0.001 | |
BMI (mean (SD)) | 23.68 (3.41) | 24.57 (2.95) | 24.31 (3.52) | <0.001 |
write.csv
함수를 사용하여 table1을 csv파일로 저장할 수 있다. write.csv(x, file=“파일명”) 형식을 사용하여 csv파일로 저장한다.
이번 강의를 정리하자.
tableone 패키지의 CreateTableone
함수를 사용하여 요약 통계량 테이블을 작성할 수 있다.
CreateTableone
함수에는 다양한 옵션이 존재하며 strata 옵션을 통해 그룹별 통계량을 계산할 수 있다.
CreateTableOne
함수를 사용하여 테이블을 만든 후, print 명령어로 세부 옵션을 지정할 수 있다.
summary
함수를 쓰면 누락값을 포함한 table1의 자세한 정보를 알 수 있다.
write.csv
함수를 사용하여 tableone 패키지로 만든 table을 csv파일로 저장할 수 있다.