表を作るコマンドが一通り収録されているパッケージの紹介です。表内の文字やセルの体裁を整えることはもちろん、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)
出力例
少しでも、あなたの解析が楽になりますように!!