エクセルを操作するパッケージには「XLConnect」「WriteXLS」などがあります。でも、操作は楽だけれども少し大きなデータだとエラーが出たり、大きいデータを扱えるけど体裁コマンドがなかったり。そんな問題を解決出来るパッケージの紹介です。
作業効率に関わるので、好みにあったパッケージを利用してはいかがでしょうか。
パッケージバージョンは4.2.5。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("openxlsx")
データ例の作成
データ数1,000,000のデータを作成します。パソコン環境によってデータ数を調整してください。
###データ例の作成##### #データ数1,000,000 TestData <- data.frame(Group = paste0("テスト", 1:1000000), Data1 = sample(1:500, 1000000, replace = TRUE), Data2 = sample(200:300, 1000000, replace = TRUE)) ########
エクセルファイルの読み書き・体裁を整える
参考までにエクセルファイルへの書き込み・出力の処理時間を紹介します。また、openxlsxパッケージにはセルの体裁だけでなく、表示書式を管理するコマンドも収録されています。
詳細はコメント、パッケージのヘルプを確認してください。
############################################# ###エクセルファイルの読み込み:read.xlsxコマンド ############################################# library("tcltk") library("openxlsx") #ファイルを選択 XLPath <- paste0(as.character(tkgetOpenFile(title = "エクセルファイルを選択", filetypes = '{"エクセルファイル" {"*.*"}}', initialfile = c("*.*")))) #読み込むシートを指定:sheetオプション XLData <- read.xlsx(XLPath, sheet = 1) ########################################################## ###作業フォルダにデータをxlsxで書き込み出力:write.xlsxコマンド ########################################################## #データ数1000000を出力 #エクセルのテーブルスタイル9を適応:asTableオプション #書き込み位置を指定:xyオプション system.time(write.xlsx(TestData, file = "TestData.xlsx", asTable = TRUE)) #約20MBのエクセルファイルが出力されます #CPU,メモリにもよりますが処理時間の参考 ユーザ システム 経過 28.990 1.044 30.183
シートが複数のエクセルファイルを作成する
ワークブックの作成、シートの追加、データの書き込み、行列の固定、列の幅に関するコマンドと作成した内容をエクセルを立ち上げて確認、作業フォルダにワークブックを保存するコマンドを紹介します。
#ワークブックの作成:createWorkbookコマンド #作成者の設定:creatorオプション NewWb <- createWorkbook(creator = "からだにいいもの") #シートの追加:addWorksheetコマンド #枠線の有無:gridLinesオプション #シート名は日本語も可能です addWorksheet(wb = NewWb, sheetName = "Karada", gridLines = FALSE) addWorksheet(wb = NewWb, sheetName = "いいもの", gridLines = TRUE) #データの書き込み:writeDataコマンド writeData(wb = NewWb, sheet = "Karada", x = TestData, startCol = 4, startRow = 4) #データをテーブル形式でシートに書き込む:writeDataTableコマンド #テーブル体裁を設定:tableStyleオプション;スタイル名はエクセルを参照 writeDataTable(wb = NewWb, sheet = "いいもの", x = TestData, startCol = 4, startRow = 4, tableStyle = "TableStyleLight9") #シート名"Karada"の体裁を調整 #行列の固定:freezePaneコマンド freezePane(wb = NewWb, sheet = "Karada", firstRow = FALSE, firstCol = FALSE, firstActiveRow = 5, firstActiveCol = 5) #列の幅を指定:setColWidthsコマンド setColWidths(wb = NewWb, sheet = "Karada", cols = 4, widths = "auto") #作成したワークブックをエクセルで確認する:openXLコマンド #エクセルがインストールされている必要があります #エクセルから保存できます openXL(NewWb) #ワークブックを作業ディレクトリに保存:saveWorkbookコマンド saveWorkbook(wb = NewWb, "Test.xlsx", overwrite = TRUE)
出力例
・シートが複数あるエクセルファイルを作成するコマンド例
少しでも、あなたの解析が楽になりますように!!