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