gt パッケージの紹介 ~Rで作表の決定版!?~ (1)
Rで綺麗な表を作るパッケージgtの存在を知りました。神ライブラリの予感がしたので少し調べたり触ったりしてたことをまとめます。
いままではknitr::kable()
やDT::datatable()
を使っていたのですが、本格的に乗り換えを検討しています。
gtパッケージとは
- Rで綺麗な表を作るライブラリ。
- DTパッケージとは異なり、インタラクティブな操作はできな。
- 作図におけるggplot2的ポジションを狙っていると思われる。
- tidyverseのスタイルガイドに準拠しており、パイプ演算子
%>%
を用いて、細かい表の調整をブロックのように組み合わせることができる。
gtパッケージで作れる表の形
gtパッケージを使うとどのような表をつくることができるか、公式サイトから図を拝借させていただきました。
図より、表が以下の要素から構成されていることがわかります。table body以外は必ずしも付ける必要はなく、場合に応じて付け足していくことになります。
- table body : 表の本体。値が入る部分
- table header : ヘッダー。タイトルとサブタイトル
- table footer : フッター。注釈やリファレンスなど
- column labels : 列名。複数列に対してラベルをつけることもできる
- stub : 行名。インデックス
- stub head : 行名の上にくる部分
基本的な流れ
- 表にするデータフレームの用意
data.frame
,tibble
,data.table
のいずれでも良い。
gt()
によるgt_tbl
オブジェクト作成- 細々した調整
- 出力。保存など。
- なんとhtml形式だけでなく、latex形式でも作れる!!
gtテーブルオブジェクトの作成:gt()
データフレームを用意し、gt()
に渡すことで行います。
# CRANに登録されているのでインストールは install.packages("gt") library(tidyverse) library(gt) df <- iris %>% group_by(Species) %>% summarise(count = n(), mean_SepalLength = mean(Sepal.Length), sd_SepalLength = sd(Sepal.Length)) tbl_1 <- gt(df) print(tbl_1)
すると、以下のような表が作成されます。この時点でも十分綺麗ですね。
どんどんリッチにすることができます。たとえばtab_header()
を使ってタイトルを付け加えてみます。まるでggplotのように、表のオプションをパイプでつなげていくことができます。
tbl_2 <- tbl_1 %>% tab_header(title = "Edgar Anderson's Iris Data", subtitle = "The species are Iris setosa, versicolor, and virginica") tbl_2
Edgar Anderson's Iris Data | |||
---|---|---|---|
The species are Iris setosa, versicolor, and virginica | |||
様々なgtの関数や使い方はまた次の記事で紹介しようと思います。
表の出力
ggplotと同様、Rmd中やConsole上であればgt_tbl
オブジェクトをそのままprint()
することで表示することができますが、表のhtmlファイルを別で保存するには、gtsave()
関数を使います。次のコードでは上で作った表をiris_summary.html
という名前で保存しています。
gtsave(tbl_2, "iris_summary.html")
なんと、gtsave()
の中のファイル名で、拡張子を.tex
とすると、LaTeX形式で保存することもできます。これで、面倒だったmulticolumnやmultirowなどに悩まされることもなくなるでしょう!!すごい!!