「flextable」パッケージ、「tables」パッケージや対象のオブジェクトだけでなく、線形混合モデルに便利な「broom.mixed」&「nlme」パッケージの結果を「openxlsx2」パッケージを使用して表でエクセルに出力可能なパッケージの紹介です。
「flextable」パッケージはWordやPowerPointファイルに表を出力するのに大変便利なパッケージです。
「openxlsx2」パッケージは下記の紹介を確認してください。
なお、「flextable」パッケージ、「tables」パッケージ以外の対象オブジェクトは下記のとおりです。
glm, grouped_data, htest, kmeans, lm, pam, summarizor, table, tables::tabular, tabulator, xtable
パッケージバージョンは0.2.1。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
# パッケージのインストール
# 「openxlsx2」パッケージもインストールされます
install.packages("flexlsx")
コマンドの紹介
詳細はコマンド、パッケージのヘルプを確認してください。
# パッケージの読み込み
library("flexlsx")
### 準備 #####
## データ例の作成
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パッケージの読み込み
# flextableパッケージがなければインストール
if(!require("flextable", quietly = TRUE)){
install.packages("flextable");require("flextable")
}
# flextableオブジェクトの作成:flextableコマンド
# flextableパッケージは記事「https://www.karada-good.net/analyticsr/r-607/」を参照
FtObject <- flextable(data = TestData, col_keys = names(TestData),
cwidth = 0.75, cheight = 0.15)
##
## エクセル作成のためにワークブックの作成:wb_workbook,wb_add_worksheetコマンド
## openxlsx2パッケージは記事「https://www.karada-good.net/analyticsr/r-800/」を参照
# パッケージの読み込み
library("openxlsx2")
# ワークブックを作成しテストシートを追加
Test_wb <- wb_workbook() %>%
wb_add_worksheet(sheet = "テスト")
##
## エクセルシートにflextableオブジェクトを書込み:wb_add_flextableコマンド
# ワークブックを指定:wbオプション
# 追加するシートを指定:sheetオプション
# flextableオブジェクトを指定:ftオプション
# 追加する位置を指定:dimsオプション;例_"A1"/"A1:B2",
# start_colオプション:列を指定, start_rowオプション:行を指定
Test_wb <- wb_add_flextable(wb = Test_wb, sheet = "テスト",
ft = FtObject, dims = "B2")
##
##「broom.mixed」&「nlme」パッケージ結果や対象オブジェクトを
# flextableオブジェクトに変換:as_flextableコマンド
# 特にオプションは無し
### 例_「broom.mixed」&「nlme」パッケージ結果 #####
## 「broom.mixed」&「nlme」パッケージで処理
# broom.mixedパッケージの読み込み
# broom.mixedパッケージがなければインストール
if(!require("broom.mixed", quietly = TRUE)){
install.packages("broom.mixed");require("broom.mixed")
}
# nlmeパッケージの読み込み
# nlmeパッケージがなければインストール
if(!require("nlme", quietly = TRUE)){
install.packages("nlme");require("nlme")
}
# 制限付き最尤法
lmer <- lme(distance ~ age, data = Orthodont)
# as_flextableコマンドで変換
ft_lmer <- as_flextable(lmer)
# シートに書き込み
Test_wb <- wb_add_flextable(wb = Test_wb, sheet = "テスト",
ft = ft_lmer, dims = "L2")
########
### 対象オブジェクト #####
# 対象オブジェクト;glm,grouped_data,htest,kmeans,lm,pam,summarizor,
# 対象オブジェクト;table,tables::tabular,tabulator,xtable
# 例_tables::tabularオブジェクト#####
# tablesパッケージの読み込み
# tablesパッケージがなければインストール
if(!require("tables", quietly = TRUE)){
install.packages("tables");require("tables")
}
# tables::tabularオブジェクトを作成:tabularコマンド
tab <- tabular(table = (mean + mean) * (Sepal.Length + Sepal.Width) ~ 1,
data = iris)
# as_flextableコマンドで変換
ft_tab <- as_flextable(tab)
# シートに書き込み
Test_wb <- wb_add_flextable(wb = Test_wb, sheet = "テスト",
ft = ft_tab, dims = "H2")
########
# as_flextableコマンドで変換
ft_tab <- as_flextable(test)
# シートに書き込み
Test_wb <- wb_add_flextable(wb = test, sheet = "テスト",
ft = ft_tab, dims = "H2")
# エクセル内容を確認:openxlsx2::wb_openコマンド
wb_open(Test_wb)
# エクセルファイルを作業フォルダに出力:openxlsx2::wb_saveコマンド
wb_save(wb = Test_wb, file = "Test.xlsx")
出力例
少しでも、あなたの解析が楽になりますように!!