RによるExcelファイル(csv, xlsx)の読み込み方法

R

せっかくRを使えるようになっても、解析したいデータがExcelファイル…。データを解析するには、まず、解析データをExcelファイルからRに読み込む必要があります。ここでは、大きく3つの方法を紹介します。

  1. クリップボード経由で読み込む
  2. csvファイルから読み込む
  3. Excelファイル(xlsx)から直接読み込む

Excelファイルからの読み込み方

クリップボード経由で読み込む

ExcelではなくRでデータ解析をするメリットの一つは、どういうステップでデータ解析を行なったのかをScriptに記録することで再現性を保つことです。ですが、毎回毎回、再現性を保つ必要があるわけでもなく、「ExcelにあるデータをちょっとRで処理したい」、そんなときにはクリップボード経由で読み込むのが簡単かもしれません。以下の2ステップでクリップボードからRにデータを読み込めます。

  1. Excel上でRに読み込みたいデータをコピーする
  2. R上で読み込みコードを実行する

Step1 : Excel上でRに読み込みたいデータをコピーする

読み込みたいデータのみなのか、ヘッダー(変数名)を含むのかはどちらでもOKですが、
Step2のコードが若干変わりますので、どの部分をコピーするかを意識してコピー作業を行なってください。

Step2 : R上で読み込みコードを実行する

read.table()関数を使うことで読み込めます。ここでは最低限理解しておく必要がある2つの引数を紹介します。この2つの引数以外にもたくさんの引数でread.tableの挙動を調整することができますので、必要に応じて、ヘルプファイル等を調べてください。

read.tabel(file, header = FALSE)

file
WindowsかMacかでコードが若干変わります。

  • Windowsの場合: “clipbord”を指定
  • Macの場合: pipe(“pbpaste”)を指定

header

  • 読み込みたいデータのみコピーした場合: header = FALSEを指定
  • ヘッダーも含めてコピーした場合: header = TRUEを指定

コード
以下のコードでExcelでコピーしたデータを変数xにdata.frameとして取り込むことができます。

# Windows, データのみコピーした場合
x <- read.table("clipbord")

# Mac, ヘッダーもコピーした場合
x <- read.table(pipe("pbpaste"), header = TRUE)
R言語とExcel : RでExcelと同等の作業をするには?
これまで入社以来約25年機械製品の設計・開発試験等の仕事を続けてきて、その間、一番使い続けてきたソフトはExcelです。でも、Excelでできることって、実はRでもできます。RでExcelと同等のことをする方法について整理しています。
競馬予想AIの作り方 無料ツールのみで作成する方法
競馬AIを作る方法について説明しています。競馬AIを作るために使える無料ツール「R」と「RStudio」、そして競馬AI作成の中核となる「データ収集」「AIモデルの作成」といった作業についても具体的に紹介しています。

csvファイルから読み込む

Excelファイルをcsvとして保存して、そのcsvファイルをRに読み込むことで、ExcelデータをRに読み込むことができます。csvファイルの読み込みはRではよく使われると思いますが、ここでは、2つの方法を紹介します。

  1. 標準ライブラリのread.csv()関数を使う
  2. readrパッケージのread_csv()関数を使う

csvファイルは標準ライブラリのread.csv()関数で読むこともできますが、readrパッケージのread_csv()の方が、以下のような特徴を持っています。

  • 高速、省メモリ
  • 列の名前や肩を指定しやすい
  • 指定した列だけ読み込むこともできる

また、read.csv()、read_csv()以外の方法として、data.tableパッケージのfread()関数があります。大きなデータを扱うときは、こちらの方が良いと言われていますが、戻り値の型がRでよく使われるdata.frame( or tibble)ではないので注意が必要です。ここでのfread()関数の紹介は割愛します。

read.csv()関数

read.csv(file, header = FALSE)

read.csv()関数もこの2つの引数以外にもたくさんの引数で挙動を調整することができますが、ここでは最低限必要なこの2つの引数についてのみ紹介しています。

file
読み込みたいcsvファイル名

header

  • 読み込みたいcsvの1行目にヘッダーが含まれていない場合: header = FALSEを指定
  • 読み込みたいcsvの1行目にヘッダーが含まれている場合: header = TRUEを指定

コード
以下のコードでcsvのデータを変数xにdata.frameとして取り込むことができます。

# ヘッダーが含まれていない場合
x <- read.csv("data1,csv")

# ヘッダーが含まれている場合
x <- read.csv("data2,csv", header = TRUE)
競馬予想AIの作り方 無料ツールのみで作成する方法
競馬AIを作る方法について説明しています。競馬AIを作るために使える無料ツール「R」と「RStudio」、そして競馬AI作成の中核となる「データ収集」「AIモデルの作成」といった作業についても具体的に紹介しています。
Rでスクレイピングするならrvest 表もリンクもテキストも
Rでスクレイピングをするならrvestパッケージを使うのがベスト。表データ、リンク先URL、テキストなどのデータを簡単に入手できます。netkeibaのレース結果を題材にrvestパッケージの使い方をまとめています。

read_csv()関数

read_csv(file, col_names = TRUE)

read_csv()関数もこの2つの引数以外にもたくさんの引数で挙動を調整することができますが、ここでは最低限必要なこの2つの引数についてのみ紹介しています。read.csv()関数とread_csv()関数で、引数のfileは同じ意味ですし、headerとcol_namesも基本的には同じ意味です。ただ、headerはヘッダーがない場合がデフォルトであり、col_namesはヘッダーがある場合がデフォルトに設定されているので注意してください。

file
読み込みたいcsvファイル名

col_names

  • 読み込みたいcsvの1行目にヘッダーが含まれていない場合: col_names = FALSEを指定
  • 読み込みたいcsvの1行目にヘッダーが含まれている場合: col_names = TRUEを指定

コード
以下のコードでcsvのデータを変数xにtibbleとして取り込むことができます。tibbleはdata.frame型の拡張版でtidyverseではよく使われるデータ型です。

library(readr)

# ヘッダーが含まれていない場合
x <- read_csv("data1,csv", col_names = FALSE) 

# ヘッダーが含まれている場合# ヘッダーが含まれている場合
x <- read_csv("data2,csv")
RでExcelのVLOOKUP関数と同じことを実行する
Excelでよく利用される関数のひとつとしてVLOOKUP関数があります。VLOOKUP関数は指定した範囲の先頭列を検索し、検索条件に一致した行に関する指定した列番号の値を返すという関数です。これと同じことをRで行います。 Rの基本機能のみでとても簡単にできます。
競馬予想AIの作り方 無料ツールのみで作成する方法
競馬AIを作る方法について説明しています。競馬AIを作るために使える無料ツール「R」と「RStudio」、そして競馬AI作成の中核となる「データ収集」「AIモデルの作成」といった作業についても具体的に紹介しています。

Excelファイル(xlsx)から読み込む

CRANでExcel, xlsxを調べると、openxlsx, xlsx, readxlなどのパッケージが見つかりますが、ここではtidyverseに含まれるreadxlパッケージを使った方法について紹介します。Excelファイルの読み込みはread_xlsx()関数を使います。

read_xlsx(path, sheet = NULL, range = NULL, col_names = TRUE)

path
Excelファイル(xlsx)のパス(ファイル名)

sheet
名前または数字。値が指定されていなければ、1つ目のシートを読み込む。値が指定されていれば、対応するシートが読み込まれる。

range
読み込むセルの範囲(”B3:D87″, “Budget!B2:G14″など)。セルの範囲にSheet名が含まれる場合は、引数sheetの値は無視される。

col_names

  • 読み込みたいcsvの1行目にヘッダーが含まれていない場合: col_names = FALSEを指定
  • 読み込みたいcsvの1行目にヘッダーが含まれている場合: col_names = TRUEを指定

コード
以下のコードでExcelファイル(xlsx)のデータを変数xにtibbleとして取り込むことができます。tibbleはdata.frame型の拡張版でtidyverseではよく使われるデータ型です。

library(readxl)

x <- read_xlsx(path = "data_with_header.xlsx", sheet = 2, range = "A1:B13")
Rで文字列を扱う人には必須!正規表現を使えるようになろう!
Rの文字列操作関数には、正規表現を使って文字列のマッチングを行うものがあります。この関数を使いこなせれば、データ分析の前処理がかなり楽になるはず。ここに載せている正規表現のパターンだけでも、かなり多くの文字列操作ができるはずです。
RとKeras(TensorFlow)でディープラーニング
Keras/TensorFlowを使えばRでもディープラーニングを行うことができます。しかも、とても簡単に。Keras/TensorFlowのインストールから、簡単な例題までを、はじめてディープラーニングにトライする方に向けてまとめています。

まとめ

ExcelファイルからRに読み込む3つの方法について紹介しました。個人的には、以下のように使い分けています。

  • クリップボードを経由
    使い捨てのコード
  • csvから読み込む方法
    この方法が中心。read.csvからread_csvへの移行中。
  • Excelから直接読み込む方法
    Excelは簡単に書き換えることができるので、データの管理が難しいように感じています。ですから、Excelから読み込む方法は、他の人とのやり取りの中でcsvでもよかったのにExcelファイルでやり取りしたというような場合のみに限定しています(その場合でもcsvに変換することの方が多いです。ほんとに使うのはタイムスタンプをきちんと残したい時くらいかな)。

ExcelのデータをRに読み込んだら、次はでデータ解析。ExcelでやってたことをRでもやりたい。そんな時、わざわざExcelに戻って作業なんて、イヤですよね。ExcelでやっていたことをRでやるには、こちら。

R言語とExcel : RでExcelと同等の作業をするには?
これまで入社以来約25年機械製品の設計・開発試験等の仕事を続けてきて、その間、一番使い続けてきたソフトはExcelです。でも、Excelでできることって、実はRでもできます。RでExcelと同等のことをする方法について整理しています。
統計学 : 標準偏差や分散はなぜnで割ったりn-1で割ったりするのか
標準偏差や分散の計算って、nで割ったり、n-1で割ったり、よく分からなかったりしませんか? 結論から言うと、ばらつきの表現と言う意味での分散の定義はデータ数nで割るのが正しいのだけれど、標本から母集団の分散を「推定」する場合はn-1で割った方が妥当だということです。