R: Excel ファイルを読み込む

UBC/informatics/r/data_input_excel

このページの最終更新日: 2025/08/12

  1. R で Excel ファイルを読み込む
  2. readxl パッケージ
  3. openxlsx パッケージ

広告

概要: R で Excel ファイルを読み込む

基本的には、Excel でなく csv ファイルの方が好みである。csv ファイルからの読み込みは「R でテキストファイルを読み込む」へどうぞ。

ここでは、R で Excel ファイルを読み込む方法をまとめる。複数の パッケージ があり、しかも関数の名前が同じなので、状況はかなり混乱している。dplyr の filter() でもそうだが、openxlsx::read.xlsx() のように、パッケージ名をつけてスクリプトを書く習慣をつけたいところである。

まずは、関係するパッケージを表にまとめる。表中のリンクは、ページ下方の詳細へ移動する。

パッケージ

特徴など

readxl

このパッケージの read_excel() は良い。

openxlsx

read.xlsx() 関数が使いやすい。下記の xlsx パッケージにも同名の関数があるので、スクリプトでは openxlsx::read.xlsx() の形を推奨。

xlsx

Java で書かれた Apache POI を使っている (1) ので、インストールなどの手順がややこしくなる印象。read.xlsx() と read.xlsx2() がある。


広告

「あとがき」で当サイトを参考にしたと書いてくれているラノベです。面白かったです。


readxl パッケージ

現在のところ、このパッケージの read_excel() をよく使っている。似た名前の関数が他のパッケージにあるので、readxl:: をつけておく方が安全。以下の形が基本。

readxl::read_excel(path, sheet = 1, col_names = TRUE, col_types = NULL, na = "", skip = 0)

path

Excel ファイルへのパス

sheet

読み込む Excel シート。順番を示す数字か、シートの名前の文字列。デフォルトは 1 番目のシート。

col_names

TRUE だと最初の行がカラム名になる。FALSE の場合、X1, X2... というカラム名がつけられる。

col_types

データタイプの指定。何も記入しないと、Excel のデータから勝手に推察する。"skip", "numeric", "date" or "text" が選択可能。skip の場合は、そのカラムを読み込まずに飛ばす。

カラムごとにデータタイプを変えたい場合は、col_types = c("date", "numeric", "numeric") のようにベクターで指定する。

2024 年秋、1 のような数字と、A-1 のような文字列が混在している列を text で読み込んだら、数字が 1.0 のように変換されてしまう問題が生じた。データタイプを指定しないと、.0 は追加されず、文字列部分が NA になってしまう。この問題をきれいに解決する方法がまだ見つかっていない。→ ページ下方の readxl: 数値と文字が混じった列の読み込み へ。

na

デフォルトでは、blank は自動的に 欠損値 NA に変換される。ここで値を指定することができる。

skip

skip したい行の数を指定できる。


readxl: 数値と文字が混じった列の読み込み

一つ例を挙げてみよう。以下の Excel data を読み込む。欠損値があり、さらに A4 では数値が文字列として保存されている厄介なデータである。

Excel シングルクオーテーション 数値 文字列

何も指定せずに読み込んだ場合。A は文字列、B は欠損値 NA を含む数値 (double) となる。形式を表示してくれるのも良いところ。

R read_excel関数

A も数値として読み込みたい場合は、col_types = "numeric" を指定する。数値が文字列として保存されていた場合、それを数値に変換して読み込む。どのセルが数値に変換されたかも表示してくれる。blank は NA になる。

R read_excel関数

ただし、文字列として保存されている数値というのはやはり問題があるようで、このページ では 342.3902 が 342.39019999999999 として読み込まれる場合があることなどが指摘されている。


col_types = "numeric" を指定しているにも関わらず、文字列がデータ中に存在した場合。この例では、B2 が空欄でなく "C" という文字が入っている。「数字のあるべきところに "C" がある」というエラーが出て、C は NA となる。結果として、データは全て数値データになっている。

R read_excel関数

openxlsx パッケージ

openxlsx::read.xlsx() では、データタイプを integer, double, numeric, character, logical のうちから指定できる (3)。

xlsxFile

Excel ファイルへのパス

sheet

読み込む Excel シート。順番を示す数字。

rows

読み込む行。デフォルトは NULL で、この場合は全ての行が読み込まれる。

cols

読み込む列。デフォルトは NULL で、この場合は全ての列が読み込まれる。1:5 のように指定できる。


広告

References

  1. RでExcelのデータを読む方法. Link: Last access 2024/03/09.
  2. Rで解析:エクセルファイルの作成が大変便利!!「openxlsx」パッケージ. Link: Last access 2024/03/09.
  3. UC Business Analytics R Programming Guide, Importing Excel Files. http://uc-r.github.io/import_excel_files: Last access 2024/06/04.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。

このページの目次

1. Excel 読み込み
2. readxl パッケージ