紹介するパッケージは、メニューでグループを指定して表示やテーブルを各種ファイルで出力などが可能なインタラクティブなテーブルをHTMLで出力することができるパッケージです。もちろん、CSSでデザインを指定することもできます。
機能が非常に多いパッケージです。日常的に使いそうな機能を紹介します。
パッケージのバージョンは0.21。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドをRで実行してください。
#パッケージのインストール install.packages("DT")
実行コマンドと出力例
詳細はコマンド内のコメントを確認してください。
・パッケージ利用の事前準備
ファイルの保存先とデータ例の作成
#パッケージの読み込み library("DT") ###ファイルの保存場所を指定##### library("tcltk") setwd(paste(as.character(tkchooseDirectory(title = "保存場所を選択"), sep = "", collapse =""))) ######## ###データ例の作成##### #tidyverseパッケージがなければインストール if(!require("tidyverse", quietly = TRUE)){ install.packages("tidyverse");require("tidyverse") } set.seed(1234) n <- 50 TestData <- tibble(Group = sample(paste0("Group", 1:4), n, replace = TRUE), X_num_Data = rnorm(n), Y_num_Data = runif(n)) ########
・最低限のテーブルを作成する:datatableコマンド
結果の出力は「htmlwidgets」パッケージのsaveWidgetコマンドを利用します。
#インタラクティブなテーブルを作成:datatableコマンド TestHTML1 <- datatable(TestData, rownames = FALSE, caption = "Table: datatableコマンド", width = 550) #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML1, "TestHTML1.html")
・テーブルのカスタマイズ
列フィルタ、ハイパーリンクデータの書き込み、データの表示数、セルの塗りつぶしなどテーブルの体裁を整える例です。
##カスタムフィルタ## #filterとoptionsで設定します #optionsはlistで設定します TestHTML2 <- datatable(TestData, rownames = FALSE, caption = "Table: カスタムフィルタ", filter = "top", options = list(Data1 = 100, autoWidth = TRUE), width = 550) #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML2, "TestHTML2.html") #### ##ハイパーリンクを含むテキスト## #matrixコマンドでデータを作成 #新しいウィンドウが開きます TESTURL <- matrix(c('<p>からだにいいもの</p>', '<a href="http://karada-good.net" target="_blank">karada-good.net</a>'), 1) #行名の設定 colnames(TESTURL) = c('<span style="color:blue">ブログ名</span>', '<em>クリックしてね</em>') #escapeオプションにFALSEを設定します TestHTML3 <- datatable(TESTURL, rownames = FALSE, caption = "Table: ハイパーリンク", escape = FALSE, width = 550) #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML3, "TestHTML3.html") #### ##テーブルの表示列数と表示列メニュー## #optionsオプションにリストでpageLengthとlengthMenuで指定します #初期に表示される列数はpageLengthで3に設定しています TestHTML4 <- datatable(TestData, rownames = FALSE, caption = "Table: テーブルの表示列数と表示列メニュー", options = list(pageLength = 3, lengthMenu = c(6, 12, 18, 24)), width = 550) #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML4, "TestHTML4.html") #### ##TestHTML1のセルの表示書式を設定## #X_num_Dataを通貨表示,Y_num_Dataをパーセント表示 #参考:小数点の調整:formatRoundコマンド TestHTML5 <- TestHTML1 %>% formatCurrency("X_num_Data") %>% formatPercentage("Y_num_Data", 2) #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML5, "TestHTML5.html") #### ##TestHTML1のセルの背景色と文字色を設定## #背景色はstyleIntervalオプションを使用しています #styleInterval(数値, c(数値以下のセルの色, 数値以上のセルの色)) TestHTML6 <- TestHTML1 %>% formatStyle("X_num_Data", color = "#a87963", backgroundColor = styleInterval(250, c("#4b61ba", "#deb7a0")), fontWeight = "bold") %>% formatStyle("Y_num_Data", color = "#28231e", backgroundColor = styleInterval(260, c("#ffdd99", "#a87963")), fontWeight = "bold") #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML6, "TestHTML6.html") #### ##CSSで書式を設定## #パイプ"%>%"でつなげてformatStyleで設定します TestHTML7 <- TestHTML1 %>% formatStyle("X_num_Data", transform = "rotateX(45deg) rotateY(20deg) rotateZ(30deg)", backgroundColor = "#a87963") #結果をhtmlで出力:htmlwidgets::saveWidgetコマンド saveWidget(TestHTML7, "TestHTML7.html") ####
・カスタムフィルタを設定
・ハイパーリンクを含むテキストを設定
・テーブルの表示列数と表示列メニュー
・TestHTML1のセルの表示書式を設定
・TestHTML1のセルの背景色と文字色を設定
・CSSで書式を設定
・インタラクティブな表の作成
メニューでグループを指定して表示、テーブルを各種ファイルで出力、テーブルのスクロールバーの追加例です。
##メニューでグループを指定して表示## #extensionsオプションに"Select", "SearchPanes" #optionsのtargetsはグループ列以外を指定する #targetsの範囲は0から始まる TestHTML8 <- datatable(TestData, rownames = FALSE, caption = "Table: Select,SearchPanes", extensions = c("Select", "SearchPanes"), options = list(dom = "Pfrtip", columnDefs = list(list( searchPanes = list(show = FALSE), targets = 1:2))), selection = "none", width = 550) #作成テーブルをhtmlで出力 saveWidget(TestHTML8, "TestHTML8.html") #### ##テーブルを各種ファイルで出力## #extensionsオプションに"Buttons" TestHTML9 <- datatable(TestData, caption = "Table: Buttons", extensions = "Buttons", options = list( dom = "Bfrtip", buttons = c("copy", "csv", "excel", "pdf", "print") ), width = 550) #作成テーブルをhtmlで出力 saveWidget(TestHTML9, "TestHTML9.html") #### ##テーブルのスクロール## #extensionsオプションに"Scroller" TestHTML10 <- datatable(TestData, rownames = FALSE, caption = "Table: Scroller", extensions = "Scroller", options = list(deferRender = TRUE, dom = "frtiS", scrollY = 300, scrollCollapse = TRUE), width = 550) #作成テーブルをhtmlで出力 saveWidget(TestHTML10, "TestHTML10.html") ####
・メニューでグループを指定して表示
・テーブルを各種ファイルで出力
ボタンをクリックすると対象フォーマットでデータを取得できます。
・テーブルのスクロールバー
少しでも、あなたの解析が楽になりますように!!