Rで解析:WordやPowerPointへも表を出力「flextable」パッケージ


htmlだけでなくWordやPowerPointファイルへ表を出力できるパッケージの紹介です。WordやPowerPointへ出力した表は各ソフトウェア内で編集できるので大変便利なパッケージだと思います。

パッケージバージョンは0.3.0。WordやPowerPointは2010および2016。windows 10のR version 3.4.1で動作を確認しています。


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

下記コマンドを実行してください。

#パッケージのインストール
install.packages("flextable")



コマンドの紹介

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読み込み:libraryコマンド
library("flextable")

###データ例の作成#####
n <- 5
TestData <- data.frame("SubGroup" = sample(c("KA", "RA", "DA"), n, replace = TRUE),
                       "ID" = sample(letters[1:24], n, replace = FALSE),
                       "Area" = 1:n, "Point" = 0.1:(0.1*n),
                       "Facet" = sample(letters[1:2], n, replace = TRUE))
########

#flextableオブジェクトの作成:regulartableコマンド
#表示列を指定:col_keysオプション
#セル幅を指定:cwidthオプション
#セル高さを指定:cheightオプション
FtObject <- regulartable(data = TestData, col_keys = names(TestData),
                         cwidth = 0.75, cheight = 0.25)

#flextableオブジェクトの表示:printコマンド
#表示形式を指定:previewオプション;"html","pptx","docx"から選択
print(FtObject, preview = "html")

#テーマを適用:theme_vanillaコマンド
#他にtheme_booktabs,theme_box,theme_tron,theme_tron_legacy,theme_zebraがある
VFtObject <- theme_vanilla(FtObject)
print(VFtObject, preview = "html")

#セルを垂直方向にグループ化して表示:merge_vコマンド
MvVFtObject <- merge_v(VFtObject, j = "SubGroup")
print(MvVFtObject, preview = "html")

#セルの幅高さを自動調整:autofitコマンド
FitMvVFtObject <- autofit(MvVFtObject)
print(FitMvVFtObject, preview = "html")

#セル背景色を指定:bgコマンド
#列位置を指定:iオプション
#行位置を指定:jオプション
#色を指定:bgオプション
#位置で指定:partオプション;"all","body","header"から選択
BgFitMvVFtObject <- bg(FitMvVFtObject, i = c(3, 5), j = 2:4, bg = "red")
print(BgFitMvVFtObject, preview = "html")

#文字色を指定:colorコマンド
#色を指定:colorオプション
#その他オプションはbgコマンドと共通
ColBgFitMvVFtObject <- color(BgFitMvVFtObject, i = 3, j = 2:4, color = "yellow")
print(ColBgFitMvVFtObject, preview = "html")

#線色を指定:borderコマンド
#色の設定:borderオプション;fp_border(color = 色)で指定
#その他オプションはbgコマンドと共通
BoColBgFitMvVFtObject <- border(ColBgFitMvVFtObject, border = fp_border(color = "green"), part = "all")
print(BoColBgFitMvVFtObject, preview = "html")

#文字位置を指定:alignコマンド
#位置を指定:alignオプション;"left","right","center","justify"
#その他オプションはbgコマンドと共通
AlignFtObject <- align(BoColBgFitMvVFtObject, align = "center", part = "all")
print(AlignFtObject, preview = "html")

#文字サイズを指定:fontsizeコマンド
#文字サイズを指定:sizeオプション
#その他オプションはbgコマンドと共通
SizeAlignFtObject <- fontsize(AlignFtObject, size = 9, part = "body")
print(SizeAlignFtObject, preview = "html")

#太文字指定:boldコマンド
BoldFtObject <- bold(SizeAlignFtObject, part = "header")
print(BoldFtObject, preview = "html")

#イタリック:italicコマンド
ItaBoldFtObject <- italic(BoldFtObject, i = ~ Area > 3,
                          j = ~ Area, italic = TRUE)
print(ItaBoldFtObject, preview = "html")

#紹介コマンドを一括適応してWordで出力
#officerパッケージ:read_docxコマンド
#dplyrパッケージ:%>%コマンド
#flextableパッケージ:body_add_flextableコマンド
library("officer")
library("dplyr")
read_docx() %>%
  body_add_flextable(
    regulartable(data = TestData, col_keys = names(TestData),
                 cwidth = 0.75, cheight = 0.25) %>%
      theme_vanilla() %>%
      merge_v(j = "SubGroup") %>%
      autofit() %>%
      bg(i = c(3, 5), j = 2:4, bg = "red") %>%
      color(i = 3, j = 2:4, color = "yellow") %>%
      border(border = fp_border(color = "green"), part = "all") %>%
      align(align = "center", part = "all") %>%
      fontsize(size = 9, part = "body") %>%
      italic(i = ~ Area > 3, j = ~ Area, italic = TRUE)) %>%
  print(target = "Test.docx")

#紹介コマンドを一括適応してPowerPointで出力
#officerパッケージ:read_pptxコマンド,add_slideコマンド
#dplyrパッケージ:%>%コマンド
#flextableパッケージ:ph_with_flextableコマンド
library("officer")
library("dplyr")
read_pptx() %>%
  add_slide(layout = "Title and Content", master = "Office Theme") %>%
  ph_with_flextable(
    regulartable(data = TestData, col_keys = names(TestData),
                 cwidth = 0.75, cheight = 0.25) %>%
      theme_vanilla() %>%
      merge_v(j = "SubGroup") %>%
      autofit() %>%
      bg(i = c(3, 5), j = 2:4, bg = "red") %>%
      color(i = 3, j = 2:4, color = "yellow") %>%
      border(border = fp_border(color = "green"), part = "all") %>%
      align(align = "center", part = "all") %>%
      fontsize(size = 9, part = "body") %>%
      italic(i = ~ Area > 3, j = ~ Area, italic = TRUE)) %>%
  print(target = "Test.pptx")

出力例

・theme_vanillaコマンド

・merge_vコマンド

・紹介コマンドを全て適応

・Wordへ出力


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

スポンサードリンク

関連コンテンツ


スポンサードリンク