R言語

【R言語】openxlsxを使ったエクセルファイルの入力・出力

  1. HOME >
  2. R言語 >

【R言語】openxlsxを使ったエクセルファイルの入力・出力

スポンサーリンク

R言語でエクセルファイルを操作する方法を解説します。

ここではパッケージopenxlsxを使ってエクセルファイルの入力や出力を行っていきます。

エクセルファイル中のデータセットの読み込みから、フォントやセルの色の変更などの出力に関する関数とその使い方を紹介していきます。

今回紹介するプログラミングコードは以下からダウンロードすることができます。

Rでデータ解析を始めるならコレ
¥3,300 (2022/06/01 17:20時点 | Amazon調べ)

openxlsx

パッケージopenxlsxを用いると、エクセルファイル入力や出力といったほとんどの操作をRスクリプトから実行することができます。

openxlsxは他のエクセルファイルに関するパッケージとは違い、JAVAを必要としません。他のパッケージはJAVAのバージョンに依存するため、openxlsxを用いるのが無難です。

openxlsxに実装されている主要な関数を紹介します。ここで紹介する関数以外のRdocumentを参考にしてください。

ちなみに、この記事で紹介する関数を用いると、以下の記事のようなエクセルファイルの色塗りや編集をRスクリプトから行うことができます。

R言語 エクセルに色を塗る【自作関数】

こんにちは、usagi-sanです。今回は、R言語でエクセルファイルに色を塗る方法を紹介します。 統計解析を行う中で、解析結果の表などをエクセルに保存することがあると思います。解析結果を見やすくするた ...

続きを見る

read.xlsx

関数read.xlsxはエクセルファイル中のデータをデータフレームとして読み込む関数です。以下、関数read.xlsxとその引数の説明です。

read.xlsx(xlsxFile, sheet, startRow = 1, colNames = TRUE, rowNames = FALSE, detectDates = FALSE, skipEmptyRows = TRUE, skipEmptyCols = TRUE, rows = NULL, cols = NULL, check.names = FALSE, sep.names = ".", namedRegion = NULL, na.strings = "NA", fillMergedCells = FALSE)
関数read.xlsxの引数
xlsxFilecharacter型。読み込みたいエクセルファイルのファイル名。
sheetcharacter型。読み込みたいエクセルシート名。
startRownumeric型。何行目から読み込むか。
colNameslogical型。列名を含めて読み込むか。
rowNameslogical型。行名を含めて読み込むか。
detectDateslogical型。日付型のデータがある場合はDate型の変数に変更する。
skipEmptyRowslogical型。空行を無視するか。
skipEmptyColslogical型。空列を無視するか。
rowsnumeric型のベクトル。エクセルファイル中のどの行を読み込むか。
colsnumeric型のベクトル。エクセルファイル中のどの列を読み込むか。
check.nameslogical型。読み込んだデータフレームの列名がおかしくないか確かめる。
sep.namescharacter型。空白の列名を何で埋めるか。
namedRegion名前付きセル範囲。
na.stringscharacter型のベクトル。どの文字をNAとするか。
fillMergedCellslogical型。TRUEの場合、結合したセルの値が結合中のすべてのセルに反映される。

write.xlsx

関数write.xlsxはデータフレームをエクセルファイルに出力する関数です。以下、関数write.xlsxとその引数の説明です。

write.xlsx(x, file, asTable = FALSE, overwrite = FALSE, ...)
関数write.xlsxの引数
x出力したいデータフレーム。
filecharacter型。エクセルファイルの名前。
asTablelogical型。TRUEの場合、エクセルファイルを出力する際にwriteDataではなくwriteDataTableを用いる。
overwritelogical型。同じ名前のファイルがある場合上書きするか。

loadWorkbook

関数loadWorkbookはエクセルワークブックを読み込むための関数です。以下、関数loadWorkbookとその引数の説明です。

loadWorkbook(file, xlsxFile = NULL, isUnzipped = FALSE)
関数loadWorkbookの引数
filecharacter型。読み込みたいエクセルファイルの名前。
xlsxFilecharacter型。エクセルファイルのエイリアス。
isUnzippedlogical型。エクセルファイルがすでに解凍されている場合TRUEとする。

 saveWorkbook

関数saveWorkbookはエクセルワークブックを読み込むための関数です。以下、関数saveWorkbookとその引数の説明です。

saveWorkbook(wb, file, overwrite = FALSE, returnValue = FALSE)
関数saveWorkbookの引数
wbワークブックオブジェクト。
filecharactre型。出力するエクセルファイルの名前。
overwritelogical型。同じ名前のエクセルファイルが存在する場合上書きするかどうか。
returnValuelogical型。TRUEの場合、出力に成功したときTRURを返し、反対に失敗した場合FALSEを返す。

実行例

パッケージopenxlsxの使用例をいくつか紹介します。上で紹介した関数以外にも様々な関数の実行例を載せました。

read.xlsxとwrite.xlsx

続いてエクセルファイルの入力から出力までの手順を解説していきます。

まずパッケージをインストールしましょう。

openxlsxをインストールしライブラリに追加したら、次のようにread.xlsxを用いてエクセルファイルを読みこむことができます。

"iris.xlsx"というirisのデータセットが保存されています。read.xlsxを実行すると次のようirisdatasetに代入されているのが分かります。

注意点

read.xlsxの注意点として、reac.csvとは違いファイル名のほかにシート名を指定する必要があります。

read.xlsxの注意点として、reac.csvとは違いファイル名のほかにシート名を指定する必要があります。

次にwrite.xlsxを用いてエクセルファイルに出力する例を紹介します。

まず、準備としてdatasetSpeciescharacter型になっているため、以下を実行してfactor型に戻してあげます。

上を実行したら、エクセルファイルに出力するdatasetの集計表や解析結果の表を作成していきます。

次のように関数summaryを用いることで集計表を作成することができます。

また、Sepal.LengthとSpeciesに関する回帰分析の結果を次のよう作成します。

データセットと集計表と回帰分析の結果をエクセルファイルの各シートに出力していきます。

別々のシートに保存したい場合、次のようにリストに出力したいデータフレームを格納する必要があります。

リストの名前がシート名になります。上記の場合DatasetSummaryResultsという3つのシートが作成されます。

データフレームをリストに保存したら、write.xlsxで先ほど作ったリストを出力することで各データフレームをエクセルファイルに出力することができます。

作業ディレクトリに次の画像のような"iris解析.xlsx"が保存されているのが確認できます。

iris解析結果

ちゃんと3つのデータフレームが別々のエクセルシートに保存されています。

エクセルワークブックの編集

次にエクセルワークブックの編集方法を紹介します。

openxlsxを用いたフォントセルの色などの変更方法を解説していきます。

openxlsxにある関数loadWorkbookを使うと、ワークブックの編集ができるようになります。

先ほど作ったエクセルファイル"iris解析.xlsx"を以下のようにして、loadWorkbookで読み込みワークブックオブジェクトwbを作成します。

エクセルファイルのフォントを変更したい場合、関数modifyBaseFontを使います。引数に変更後のフォントのパラメータを指定し実行します。

セルを編集したい場合、関数createStyleを使います。フォントの種類やフォントのサイズ、セルの色など様々なパラメータを引数で設定できます。

以下を実行すると、フォントサイズを12に、フォントを"Yu Gothic"に変更し、各エクセルシートの表のヘッダーを青色で塗ることができます。

ワークブックを編集し終わったら関数saveWorkbookを実行し、編集内容を保存することができます。

次の画像のように、先ほど作った"iris解析.xlsx"のフォントが変更されて、表のヘッダーが青色に変更されています。

エクセルシートの追加

最後にワークブックの追加方法を紹介します。

先ほど作成した編集後のエクセルファイル"iris解析_編集後1.xlsx"に新しいシートを追加していきます。

まず、loadWorkbookを実行し"iris解析_編集後1.xlsx"のワークブックを読み込みます。

次に、重回帰分析の結果の表を作成します。

エクセルシートを追加するには関数addWorkbookを使います。次を実行すると"Result_multi-linear_regression"という重回帰分析のエクセルシートがワークブックオブジェクトwbに追加されます。

ポイント

事前にmodifyBaseFontを実行していますが、これは前に編集したときのフォントに合わせるためです。

エクセルシートの追加が完了したので、関数writeDataにより重回帰分析の結果をwbに書き込みます。

次に、新しく追加したエクセルシートを編集していきます。まず、前回と同様に表のヘッダーを青に変更します。

p値の大きさをセルの色で分けてあげると検定結果が見やすいため、以下のように各p値に対応する行のlogical型のベクトル、各p値のセルの色を与えて、リストに保存してあげます。

conditionAndColorにはp値がα以下であるかというlogical型のベクトルとそのαに対応する色が格納されています。

次を実行するとセルの色やフォントの色の変更を行うことができます。<./span>

ワークブックの編集ができたため、saveWorkbookで新しいエクセルファイル"iris解析_編集後2.xlsx"に保存してあげます。

saveWorkbookを実行しワークブックを保存すると、作業ディレクトリに次の画像のエクセルファイル"iris解析_編集後2.xlsx"が保存されます。

iris解析結果編集後2

重回帰分析の結果のシート"Result_multi-linear_regression"が追加されており、p値が0.1未満、0.05未満、0.01未満でセルとフォントの色が塗り分けられているのが分かります。

まとめ

R言語でのエクセルファイルの操作方法を紹介しました。

Baseなどの標準のパッケージではエクセルファイルを扱うことはできませんが、ここで紹介したパッケージを使用することでcsvファイルと同じ感覚で扱うことができるようになります。

また、csvファイルとは異なりフォントの色やセルの色の変更が可能なため、出力したファイルの編集の可能性がさらに広がります。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-,