表を作るコマンドが一通り収録されているパッケージの紹介です。表内の文字やセルの体裁を整えることはもちろん、HTML、PDF、PNG、LaTeX、RTF形式での出力、データの分割、表にggplotオブジェクトを埋め込むコマンドなどが収録されています。多くのコマンドが収録されています。興味があればパッケージヘルプを確認してください。
パッケージバージョンは0.4.0。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。また、PDF、PNG形式での出力に必要な「webshot」パッケージのinstall_phantomjsコマンドを実行し「phantomjs」をインストールます。
#パッケージのインストール
install.packages("gt")
#webshotパッケージがなければインストール
install.packages("webshot")
#webshot::install_phantomjs()コマンドを実行
webshot::install_phantomjs(force = TRUE)
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("gt")
###データ例の作成#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
set.seed(1234)
n <- 10
TestData <- tibble(Group = sample(paste0("Group", 1:4), n,
replace = TRUE),
Num_Data = sample(c(1:50), n, replace = TRUE),
Currency = sample(c(1000:10000), n, replace = TRUE),
Fct_Data_1 = factor(sample(c("か", "ら", "だ", "に",
"い", "い", "も", "の"),
n, replace = TRUE)),
Chr_Data = sample(c("か", "ら", "だ", "に",
"い", "い", "も", "の"),
n, replace = TRUE),
Fct_Data_2 = factor(sample(c("か", "ら", "だ", "に",
"い", "い", "も", "の"),
n, replace = TRUE)))
#ggplotオブジェクトを作成
plot_object <- ggplot(TestData, aes(x = Num_Data)) +
geom_bar(color = "blue") +
theme(legend.position = "none")
########
###基本的なコマンド#####
#表の基礎となるgtオブジェクトを作成:gtコマンド
#表を指定グループで分割:groupname_colオプション;
#初期値:dplyr::group_vars(data)
#行名データを指定:rowname_colオプション;初期値:"rowname"
#他オプションはヘルプ参照
TestData %>%
gt(groupname_col = "Chr",
rowname_col = "Group")
#表を保存:gtsaveコマンド
#保存形式:HTML,PDF,PNG,LaTeX,RTFが対応
#実施エラーの場合はwebshot::install_phantomjs()コマンドを実行
TestData %>%
gt(groupname_col = "Chr",
rowname_col = "Group") %>%
gtsave("Test.png", path = NULL)
########
###表の体裁コマンド#####
#流れで説明
TestData %>%
gt() %>%
#表を指定グループで分割:tab_row_groupコマンド
#ラベルを指定:labelオプション
#基準を指定:rowsオプション;正規表現も設定可能
tab_row_group(label = "Num_Data >= 25",
rows = Num_Data >= 25) %>%
tab_row_group(label = "Fct_Dataが「に」",
rows = Fct_Data_1 == "に") %>%
#ヘッダーを編集:tab_headerコマンド
tab_header(title = "KARADA TITLE",
subtitle = "からだ いいもの") %>%
#フッター側にノートを記述:tab_source_noteコマンド
#ノート内容:source_noteオプション
tab_source_note(source_note = "*KARADA-いいもの") %>%
#指定文字で列名を分割し列ラベル,データラベル表示にする:
#tab_spanner_delimコマンド
#分割文字:delimオプション
#区切り位置:spilitオプション;"last"/"first"
#列を指定:columnsオプション;初期値:everything()
tab_spanner_delim(delim = "_",
split = "last",
columns = c(Fct_Data_1, Fct_Data_2)) %>%
#列ラベルを追加:tab_spannerコマンド
tab_spanner(label = "ひらがな_数字",
columns = c(Chr_Data, Currency)) %>%
#列サブタイトルを追加:tab_stubheadコマンド
#tab_row_groupコマンドと同時不可
#tab_stubhead(label = "てすと") %>%
#########
#各セルの書式を設定:tab_styleコマンド
#書式を設定:styleオプション
#各設定はlistまたはcell_XXXコマンドで記述
#適応条件を指定:locationsオプション
#各設定はlistまたはcells_XXXコマンドで記述
tab_style(
#書式を設定
style =
list(
#塗り色設定:cell_fillコマンド
#アルファ値:alphaオプション;0:1
cell_fill(color = "lightcyan", alpha = NULL),
#テキスト設定:cell_textコマンド
#色:colorオプション
#サイズ:sizeオプション;"xx-small","x-small","small",
#"medium","large","x-large","xx-large"
#水平位置:alignオプション;"center","left","right","justify"
#垂直位置:v_alignオプション;"middle","top","bottom"
#フォントスタイル:styleオプション;"normal","italic","oblique"
#フォントウェイト:weightオプション;"normal","bold","lighter",
#"bolder"または1:1000の数字
#上付き,下付きの設定:transformオプション;
#"uppercase","lowercase","capitalize"
#ホワイトスペース:whitespaceオプション;
#"normal","nowrap","pre","pre-wrap","pre-line","break-spaces"
#インデント:indentオプション;ピクセル値
cell_text(weight = "bold", align = "center", v_align = "middle"),
#枠線設定:cell_bordersコマンド
#位置:sideオプション;""all,"left","right","top","bottom"
#線種:styleオプション;solid,"dashed","dotted"
cell_borders(sides = "all", color = "red",
style = "dashed", weight = px(2))
),
#適応条件を指定
locations = cells_body(columns = Num_Data,
rows = Num_Data >= 20)) %>%
#各セルの書式を設定
tab_style(
style = list(cell_fill(color = "#92C2FF")),
locations = cells_body(columns = "Chr_Data",
rows = c(1, 5, 10))) %>%
#数値を通貨表示にする:fmt_currencyコマンド
#通貨を指定:currencyオプション;"USD","pound","yen","EUR"など
#他はinfo_currencies()を実行するとViewerで表示されます
#対象列を指定:columnsオプション
#小数点の表示:decimalsオプション
fmt_currency(columns = Currency,
currency = "yen",
decimals = 0) %>%
#数値をパーセントにする:fmt_currencyコマンド
fmt_percent(columns = Num_Data,
decimals = 0) %>%
#グループの順番を入れ替え:row_group_orderコマンド
#グループ名が付いてないグループはNAで指定
row_group_order(groups = c("Num_Data >= 25", NA)) %>%
#ggplotオブジェクトを挿入:text_transform,ggplot_imageコマンドを組み合わせる
text_transform(locations = cells_body(columns = Num_Data, rows = 2),
fn = function(x) {
plot_object %>%
ggplot_image(height = px(200))}) %>%
#作業フォルダに保存
gtsave("Test.png", path = NULL)
出力例

少しでも、あなたの解析が楽になりますように!!