Rで解析:「flextable」、「tables」やkmeansの結果を表でエクセルに簡単出力!!「flexlsx」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

「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")

出力例


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

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