R で xlsx ファイルを読み込む
Excel スプレッドシートからデータを取得して R にインポートする最も一般的な方法は、Excel を使用して .csv
のような従来の形式でデータを保存することです。しかし、xlsx
ファイルを繰り返しインポートする必要がある場合は、Excel ファイルを直接 R にインポートするパッケージを使用するなど、より迅速なオプションが望ましい。
R の多くのパッケージは xls
/xlsx
ファイルを読み込む機能を持っています。その一つが readxl
です。このパッケージは他のパッケージに比べて外部からの依存関係が少ないため、ほとんどのオペレーティングシステムに簡単にインストールできます。R 環境に追加する最も簡単な方法は、以下のコマンドで tidyverse
ライブラリ全体をインストールすることです。
install.packages("tidyverse")
しかし、これは tidyverse
のコアライブラリではないので、library(readxl)
コマンドで明示的に読み込む必要があります。そうすれば、以下のように read_excel
関数を使って Excel ファイルをインポートできるようになります。
MySheet <- read_excel("ExcelFile.xlsx")
先ほどの例では、ExcelFile.xlsx
という名前のスプレッドシートの内容を MySheet
というデータフレームにインポートしています。
インポートするファイルをユーザに指定させる
事前に Excel ファイルの場所が分からず、ユーザにファイルを選択させて読み込ませたい場合は、ファイルパスを明示的に指定する代わりに file.choose()
を用いることができます。
MySheet <- read_excel(file.choose())
関数 read_excel()
には、インポートする特定のシートを指定したり、空白のセルの代わりに NAs
を表す値を指定するためのパラメータがあります。この例では、data
というシートをインポートし、NA
という内容を持つセルを NAs
として解釈することを指定しています。
MySheet <- read_excel("ExcelFile.xlsx", sheet = "data", na = "NA")
R で xlsx ファイルを読み込むには、openxlsx
ライブラリを利用する
Excel ファイルを R に読み込むのに使えるもう一つのパッケージとして、openxlsx
があります。このパッケージは xlsx ファイルの読み書きを簡素化し、readxl
のように Java や Perl などの外部ライブラリに依存しません。Rcpp
を用いることで、openxlsx
は巨大なファイルでも高速な読み書きを実現します。このライブラリは xlsx ファイルに対しては問題なく動作するが、古い xls ファイルには対応していません。
Openxlsx
は read.xlsx
関数を提供し、インポートしたファイルから読み込んだデータをデータフレームとして作成します。この関数には、インポートする領域に行名や列名が含まれているかどうか、インポートするワークシートの名前や番号、インポートする行や列などを指定するための多くのオプションが用意されています。
以下の例では、パッケージ openxlsx
をインストールしてライブラリを開く。次に、read.xlsx
のオプションを使って、シート 1 の Data.xlsx というファイルから 2 行目、4 行目、6 行目、5 列目から 7 列目をインポートします。
その後、得られたデータフレームの内容をコンソールに出力します。ファイルからカラム名を読み込まないので、パラメータ colNames
を False
に設定します。R は、インポートされたデータフレーム内の列に X1
、X2
、X3
のようなデフォルトの列名を自動的に割り当てます。インポートする行と列をベクトルで指定することで、インポートする行と列を指定できることに注意してください。
install.packages("openxlsx")
library("openxlsx")
MyData <- read.xlsx(xlsxFile="c:/Tmp/Data.xlsx", sheet = 1, rows = c(2, 4, 6), cols = 5:7, colNames = FALSE)
MyData
出力:
X1 X2 X3
1 34 12 17
2 15 25 66
3 32 45 56
詳細は公式の openxlsx ドキュメント を参照してください。