Rで解析:インタラクティブなDataTablesを作成「DTパッケージ」の紹介

Rの解析に役に立つ記事

紹介するパッケージは、メニューでグループを指定して表示やテーブルを各種ファイルで出力などが可能なインタラクティブなテーブルを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")
####

・メニューでグループを指定して表示

・テーブルを各種ファイルで出力

ボタンをクリックすると対象フォーマットでデータを取得できます。

・テーブルのスクロールバー


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

タイトルとURLをコピーしました