作表で使われるのは、{knitr}パッケージのkable()
(=kbl()
)と{kableExra}パッケージの組み合わせや、{gt}パッケージ等。
臨床論文の最初に出てくる「Table1」を作るときにはtableone()
も便利。
今回は、{knitr}パッケージのkable()
(=kbl()
)と{kableExra}パッケージの組み合わせについての備忘録。
kbl()で作表
kbl()は、下記のような内容。
kable(x, format, digits = getOption("digits"), row.names = NA, col.names = NA, align, caption = NULL, label = NULL, format.args = list(), escape = TRUE, ...)
kbl()の例
例えば、下記のようなデータフレームを作る。
# データフレームを作る
df <- data.frame("Pre1"=c(paste0("Cont", 1:2), paste0("Drug", 1:2)),
"Pre2"=c(paste0("Cont", 1:2), paste0("Drug", 1:2)),
"p1h_1"=c(paste0("Cont", 1:2), paste0("Drug", 1:2)),
"p1h_2"=c(paste0("Cont", 1:2), paste0("Drug", 1:2)),
"p6h_1"=c(paste0("Cont", 1:2), paste0("Drug", 1:2)),
"p6h_2"=c(paste0("Cont", 1:2), paste0("Drug", 1:2)))
# 行名をつける
rownames(df) <- c(paste0("Cont", 1:2), paste0("Drug", 1:2))
これを表にするには、kbl(データ)
で。
kbl(df)
output
Pre1 Pre2 p1h_1 p1h_2 p6h_1 p6h_2
Cont1 Cont_1 Cont_1 Cont_1 Cont_1 Cont_1 Cont_1
Cont2 Cont_2 Cont_2 Cont_2 Cont_2 Cont_2 Cont_2
Drug1 Drug_1 Drug_1 Drug_1 Drug_1 Drug_1 Drug_1
Drug2 Drug_2 Drug_2 Drug_2 Drug_2 Drug_2 Drug_2
オプション色々
format
出力形式を選ぶ。
executionのみのときは問題ないが、R Markdownでknitするとき、formatを指定しておかないとエラーがでる場合がある。
Markdownで簡単な表を書いて、 Cont_6h
align
- 左揃え:"l"
- 中央揃え:"c"
- 右揃え:"r"
例えば、中央揃えにしたいときは、
# 中央揃え
kbl(df, format = "html", align = "c")
例えば、行名のみ左揃え、あとは中央揃えにしたいときは、
# 左、中央、中央、中央
kbl(df, format = "html", align = "lccc")
キャプションをつける
キャプションはcaption =
で。
# 中央揃えにしてキャプションをつける
kbl(df, format = "html", align = "c", caption = "Drug treatment")
output
Drug treatment
Pre1 Pre2 p1h_1 p1h_2 p6h_1 p6h_2
Cont1 Cont1 Cont1 Cont1 Cont1 Cont1 Cont1
Cont2 Cont2 Cont2 Cont2 Cont2 Cont2 Cont2
Drug1 Drug1 Drug1 Drug1 Drug1 Drug1 Drug1
Drug2 Drug2 Drug2 Drug2 Drug2 Drug2 Drug2
kableExtraパッケージ
表のデザインをアレンジするには、{kableExtra}パッケージを使う。
# CRANからインストール
install.packages("kableExtra")
# 読み込み
library(kableExra)
スタイルの設定
kable_styling()
で、表中のスタイルを設定できる。
例えばフォントサイズを変える場合はfont_size =
で設定。
kbl(df) %>%
kable_styling(font_size = 8)
表全体を、画面いっぱいにする場合はfull_width = T
, 表の中身に合わせる場合はfull_width = F
。
kbl(df, align = "c", caption = "Drug treatment") %>%
kable_styling(font_size = 10, full_width = F)
output
行、列、セルのスタイルいろいろ
row_spec()
、column_spec()
、cell_spec()
で、それぞれ個別の行、列、セルのスタイル設定を行う。
例えば、第1行をボールドイタリックにして回転させ、第2と第3行を黒色背景と白色文字にし、第4行にアンダーラインを引きタイプフェースを変更し、第5列に打ち消し線を引く場合。
kbl(df, align = "c", caption = "Drug treatment") %>%
kable_styling(font_size = 10, full_width = F) %>%
row_spec(1, bold = TRUE, italic = TRUE) %>%
row_spec(1, angle = 45) %>%
row_spec(2:3, color = 'white', background = 'black') %>%
row_spec(4, underline = TRUE, monospace = TRUE) %>%
column_spec(5, strikeout = TRUE)
output
行・列をグループ化する
行や列を、それぞれpack_rows()
と add_header_above()
でまとめることができる。
また、collapse_rows()
で行を崩し、セルを複数行にまたがらせることができる。
例えば、行を2列ずつ”Cont"と”Drug”にまとめ、列を2列ずつ"treat1","treat2","treat3"にまとめる場合。
kbl(df, align = "c", caption = "Drug treatment") %>%
kable_styling(font_size = 10, full_width = F) %>%
pack_rows(index = c("Cont" = 2, "Drug" = 2)) %>%
add_header_above(c(" " = 1,"treat1" = 2,"treat2" = 2,"treat3" = 2))
output
References
本書は, 各種ツールを最大限活用するために役立つよう, あまり知られていない小ワザや簡潔で実践的な裏ワザの例を紹介します. 本書を読んだ後には, R Markdown 文書が, プレーンテキストから変換され, 処理の各ステップステップのほぼ全てで, どうカスタマイズするかが理解できることでしょう. 例えば, R コードから動的にコンテンツを作成する方法, 他の文書やチャンでコードを参照する方法, カスタマイズしたテンプレートでフォーマットを制御する方法, コードをちょっと調整する方法, 複数のプログラミング言語を分析に組み込む方法, といったことが学べるでしょう.
Rでクロス集計表を作るときに,細かい装飾の指定ができなくてイライラしたことはありませんか?knitr::kable()のような綺麗な見た目の表のまま表頭・表側のラベル部分をうまく作る方法がなかな…
本書は, 各種ツールを最大限活用するために役立つよう, あまり知られていない小ワザや簡潔で実践的な裏ワザの例を紹介します. 本書を読んだ後には, R Markdown 文書が, プレーンテキストから変換され, 処理の各ステップステップのほぼ全てで, どうカスタマイズするかが理解できることでしょう. 例えば, R コードから動的にコンテンツを作成する方法, 他の文書やチャンでコードを参照する方法, カスタマイズしたテンプレートでフォーマットを制御する方法, コードをちょっと調整する方法, 複数のプログラミング言語を分析に組み込む方法, といったことが学べるでしょう.
Excelで表を作っていたあの頃のように、Rmarkdownで作った表にも自由に色を塗りたい...。そんな方へkableExtraパッケージのご紹介です。 ちなみに、このパッケージは、基本的にはH…