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

UBC/informatics/r/data_input_excel

このページの最終更新日: 2024/04/23

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

広告

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

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

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

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

パッケージ

特徴など

openxlsx

xlsx

Java で書かれた Apache POI を使っている (1)。read.xlsx() と read.xlsx2() がある。

readxl

このパッケージの read_excel() が一番良さそうである。


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 のデータから勝手に推察する。"blank", "numeric", "date" or "text" が選択可能。

na

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

skip

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

一つ例を挙げてみよう。以下の 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関数
広告

References

  1. RでExcelのデータを読む方法. Link: Last access 2024/03/09.
  2. Rで解析:エクセルファイルの作成が大変便利!!「openxlsx」パッケージ. Link: Last access 2024/03/09.

コメント欄

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