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

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

出力例


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

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をコピーしました