gtパッケージについて
Categories:
Rにgt
というパッケージがあります。これは,お手軽に表を作るためのパッケージです。使い方については以下の記事を見ると良いです。
- https://qiita.com/yanami/items/8684640b20c86594fbec
- https://qiita.com/yanami/items/117851de49024f5980d0
ここでは私の自分のための備忘録を残しています。
データの整形
irisデータで実験してみる。表の表示に適するように前段階としてデータを整形する。
library(gt)
library(tidyverse)
dat <- tibble(iris) %>%
group_by(Species) %>%
summarise(across(Sepal.Length:Petal.Width,mean)) %>%
pivot_longer(col=-Species, names_to=c("S/P","L/W"), names_sep="\\.") %>%
pivot_wider(names_from = "L/W")
gt関数
とりあえずこのままで,gt関数に突っ込んでみるとそれらしい表を出力してみす。
dat %>% gt()
グループに分けて表示するには,groupname_col
の引数にグループ分けしたい列名を入れます。
ab1 <- gt(dat,
groupname_col = "Species",
rowname_col = "S/P")
tab1
表示する桁数が多いので減らしてみましょう。先ほど作ったものに桁数の設定を行う関数をたします。ここら辺の感覚はggplot的です。
tab2 <- tab1 %>%
fmt_number(
columns = vars("Length", "Width"),
decimals = 2)
tab2
今度はタイトルを足してみます。タイトルを設定する関数をパイプでつなぎます。ついでスタブ列の列名も足すことにします。
tab3 <- tab2 %>%
tab_header(
title = "ここにタイトルが入るよ",
) %>%
tab_stubhead("S/P") %>%
tab_style(
style=cell_text(align="left"),
locations = cells_title("title"))
tab3
ついでに注もつけてみます。
tab4 <- tab3 %>% tab_footnote(
footnote="Sepalはがく片の意味で,Petalは花びらの意味だよ",
location= cells_stubhead()
)
tab4
APAっぽい雰囲気を出す
ここまでで,表に必要な要素は大体整ったのですけれど,このままだと論文に投稿するような形になっていません。そこで以下のサイトを参考にしながらさらに細かい設定をしてAPA風の表のデザインにしてみます。
tab5 <- tab4 %>%
tab_options(
table.border.top.width = 0, #タイトルの上の線を消す,
table.border.bottom.width = 0, #注の下の線を消す
heading.title.font.size = px(16), #タイトルのフォントサイズをいい感じに
row_group.border.bottom.width = 0, #セクション名の下の線を消す
table_body.hlines.width = 0, # tableの中の水平線消す
stub.border.width = 0, # stub列の中の線を消す
column_labels.border.top.width = 3, # 変数名の行の線を黒く太く
column_labels.border.top.color = "black",
column_labels.border.bottom.width = 3,
column_labels.border.bottom.color = "black",
table_body.border.bottom.color = "black", #テーブルの下線を黒く
table.width = pct(60), # 程よく幅を広げる(数字で調整)
table.background.color = "white",
row_group.border.top.color = "black", #セクション名の上の線を消す
row_group.border.top.width = 1 #セクション名の上の線を細く
) %>% cols_align(align="center") %>%
tab_style(
style=list(cell_text(align="center")),#列名を中央揃えに
locations=cells_row_groups()
)
tab5
セルとか,列とか,タイトルとかを指定して,それぞれのパーツを指定していく感じです。結構細かいところまでできます。完成品はこちら。
毎回,こんな作業をやるのは面倒なので,自分のよく使うような表のデザインは関数化しておくと良いでしょう。
likeapa <- function(x){tab_options(x,
table.border.top.width = 0, #タイトルの上の線を消す,
table.border.bottom.width = 0, #注の下の線を消す
heading.title.font.size = px(16), #タイトルのフォントサイズをいい感じに
row_group.border.bottom.width = 0, #セクション名の下の線を消す
table_body.hlines.width = 0, # tableの中の水平線消す
stub.border.width = 0, # stub列の中の線を消す
column_labels.border.top.width = 3, # 変数名の行の線を黒く太く
column_labels.border.top.color = "black",
column_labels.border.bottom.width = 3,
column_labels.border.bottom.color = "black",
table_body.border.bottom.color = "black", #テーブルの下線を黒く
table.width = pct(30), # 程よく幅を広げる(数字で調整)
table.background.color = "white",
row_group.border.top.color = "black", #セクション名の上の線を消す
row_group.border.top.width = 1 #セクション名の上の線を細く
) %>% cols_align(align="center") %>% # スタブ以外の列名を中央揃えに
tab_style(
style=list(cell_text(align="center")), # グループ変数名を中央揃えに
locations=cells_row_groups()
)}
tab4 %>% likeapa
最後は図に保存しておしまいです。gtsave
関数を使います。
gtsave(tab5, "likeapa.pdf")