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

紹介するパッケージは、メニューでグループを指定して表示やテーブルを各種ファイルで出力などが可能なインタラクティブなテーブルをHTMLで出力することができるパッケージです。もちろん、CSSでデザインを指定することもできます。

機能が非常に多いパッケージです。日常的に使いそうな機能を紹介します。

パッケージのバージョンは0.34。実行コマンドはwindows 11のR version 4.6.0で確認しています。

パッケージのインストール

下記コマンドを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="https://www.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")
####

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

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

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

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

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

Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.
タイトルとURLをコピーしました