R: Excel ファイルを読み込む
UBC/informatics/r/data_input_excel
このページの最終更新日: 2024/09/30広告
概要: R で Excel ファイルを読み込む
基本的には、Excel でなく csv ファイルの方が好みである。csv ファイルからの読み込みは「R でテキストファイルを読み込む」へどうぞ。
- R でテキストファイルを読み込む: csv ファイルの読み込みはこのページに
- テキストファイルからコピペする
ここでは、R で Excel ファイルを読み込む方法をまとめる。複数の パッケージ があり、しかも関数の名前が同じなので、状況はかなり混乱している。dplyr の filter() でもそうだが、openxlsx::read.xlsx() のように、パッケージ名をつけてスクリプトを書く習慣をつけたいところである。
まずは、関係するパッケージを表にまとめる。表中のリンクは、ページ下方の詳細へ移動する。
パッケージ |
特徴など |
このパッケージの read_excel() は良い。 |
|
openxlsx |
read.xlsx() 関数が使いやすい。下記の xlsx パッケージにも同名の関数があるので、スクリプトでは openxlsx::read.xlsx() の形を推奨。 |
xlsx |
Java で書かれた Apache POI を使っている (1) ので、インストールなどの手順がややこしくなる印象。read.xlsx() と read.xlsx2() がある。 |
readxl パッケージ
現在のところ、このパッケージの read_excel() をよく使っている。似た名前の関数が他のパッケージにあるので、readxl:: をつけておく方が安全。以下の形が基本。
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") のようにベクターで指定する。 openxlsx::read.xlsx() では、データタイプを integer, double, numeric, character, logical のうちから指定できる (3)。 |
na |
デフォルトでは、blank は自動的に 欠損値 NA に変換される。ここで値を指定することができる。 |
skip |
skip したい行の数を指定できる。 |
一つ例を挙げてみよう。以下の Excel data を読み込む。欠損値があり、さらに A4 では数値が文字列として保存されている厄介なデータである。
何も指定せずに読み込んだ場合。A は文字列、B は欠損値 NA を含む数値 (double) となる。形式を表示してくれるのも良いところ。
A も数値として読み込みたい場合は、col_types = "numeric" を指定する。数値が文字列として保存されていた場合、それを数値に変換して読み込む。どのセルが数値に変換されたかも表示してくれる。blank は NA になる。
ただし、文字列として保存されている数値というのはやはり問題があるようで、このページ では 342.3902 が 342.39019999999999 として読み込まれる場合があることなどが指摘されている。
col_types = "numeric" を指定しているにも関わらず、文字列がデータ中に存在した場合。この例では、B2 が空欄でなく "C" という文字が入っている。「数字のあるべきところに "C" がある」というエラーが出て、C は NA となる。結果として、データは全て数値データになっている。
広告
References
- RでExcelのデータを読む方法. Link: Last access 2024/03/09.
- Rで解析:エクセルファイルの作成が大変便利!!「openxlsx」パッケージ. Link: Last access 2024/03/09.
- UC Business Analytics R Programming Guide, Importing Excel Files. http://uc-r.github.io/import_excel_files: Last access 2024/06/04.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。