![見出し画像](https://assets.st-note.com/production/uploads/images/103087547/rectangle_large_type_2_9adf2fca9be586e8b62af1c17baffecc.png?width=1200)
CreateTableOne()で簡単に表を作成
東京大学医学部老年病科の矢可部です。
基礎、臨床研究の統計解析でRを用いています。
学生や研修医の指導に使うという目的もあり、noteに記事を書いています。
さて、臨床研究の論文では対象者の特性をTable 1として最初に提示します。
今回は、Table 1を作るのに役立つCreateTableOne関数を紹介します。
サンプルデータ
今回は、"Rdata2.xlsx"ファイルを使います。以下のリンクからダウンロードできます。
前回まで使っていた"Rdata1.xlsx"に、DM(糖尿病)とMI(心筋梗塞)の既往の有無を追加しました。
パッケージtableoneをインストール
CreateTableOne関数は、tableoneというパッケージに入っています。
# パッケージ"tableone"をインストールする (初回のみ)
install.packages("tableone")
これでうまくいかない方は、こちらの記事をご覧ください。
CreateTableOneで表を作成
tableoneを呼び出します。
# パッケージ"tableone"を呼び出す
library(tableone)
そして、Rdata2.xlsxのデータ全体をRに取り込みます。
私はクリップボードにコピーしてから取り込んでいます。詳しくは以下の記事をご覧ください。
dat <- read.table(pipe("pbpaste"), sep="\t", header=T) # Macの場合
dat<-read.table("clipboard", sep="\t", header=T) # Windowsの場合
attach(dat)
ここでデータセットのdatに対し、性別で層別化した年齢、BMI, SMI, DMとMIの有病率を表にします。
そのためには以下のようなコマンドを入力します。
# table1を作成
table1<-CreateTableOne(vars=c("age","BMI","SMI","DM","MI"), strata="sex", data=dat, factorVars=c("DM","MI"), test=TRUE)
vars=c( )の( )内には、表に含めたい変数を入れます。
strata=には層別化したい変数を入れます。ここでは性別なので"sex"とします。
data=で用いるデータセットを指定します。
factorVars=c( )の( )内には、表に含めたい変数のうちカテゴリー変数のみを入れます。DMとMIの既往は「無=0、有=1」という変数にしているので該当します。
年齢やBMIなど、他の変数は連続変数なのでここに入れてはいけません。もしよかったら、"age"を入れた場合にどのような結果が出るか試してみてください。
test=TRUEと入力しておくと検定を行ってくれます。デフォルトでは
連続変数 → t検定
離散変数 → カイ2乗検定
が選択されます。
2つの検定については以下の記事で解説しています。
なおtest=TRUEを省略しても検定を行う仕様になっています。test=FALSEとすると検定を行いません。
その後、以下のコマンドでtable1を表示させることができます。
# table1を表示
table1
以下のような結果が表示されます。
![](https://assets.st-note.com/img/1681558487297-ZbdqQnQQJK.png?width=1200)
男性(0)と女性(1)に層別化して、
年齢とBMIとSMIについては平均、標準偏差、t検定の結果を
DMとMIについては有病率、カイ2乗検定の結果を
表形式で提示してくれました。
なおCreateTableOneはここではイエーツの連続性補正あり (correct=T) で比率の差の検定を行っています。
項目数が多い時
以上のやり方でも問題なく使うことができますが、表に入れたい項目が多いからとvars=やfactorVars=の中に多数の項目を入れると、コマンドの1行が非常に長くなってしまいます。
そのような場合、以下のように項目リストを文字に置き換えるのがお勧めです。
# 表に含めたい変数をkomokuに代入
komoku<-c("age","BMI","SMI","DM","MI")
# そのうち、カテゴリー変数をcateに代入
cate<-c("DM","MI")
# table1を作成
table1<-CreateTableOne(vars= komoku, strata="sex", data=dat, factorVars=cate)
見た目もスッキリしますし、間違いも少なくなります。
CreateTableOne関数は便利なので、ぜひ使いこなしてみて下さい。
今回は以上です。
この記事が気に入ったらサポートをしてみませんか?