RでのCSVデータの読み込みと書き出し

はじめに

CSV(Comma-Separated Values)データは、データ共有や保存に広く使われるフォーマットです。Rでは、CSVデータを簡単に読み込んだり書き出したりすることができます。本記事では、基本的な操作方法から、関数オプションを活用した実践例までを解説します。

CSVデータの読み込み

基本的な読み込み方法

Rの標準関数 read.csv() を使えば、簡単にCSVファイルを読み込むことができます。


# CSVファイルを読み込む
data <- read.csv("data.csv")
head(data)  # データの先頭6行を表示

主要なオプションの解説

  • header: ヘッダー行がある場合は header = TRUE(デフォルト)。
  • fileEncoding: 文字コードを指定します(例: UTF-8, Shift_JIS)。
  • na.strings: 欠損値として扱う文字列を指定します(例: "NA", "?")。
  • skip: 読み飛ばす行数を指定します。

# 日本語データを正しく読み込む例
data <- read.csv("data.csv", fileEncoding = "UTF-8", na.strings = "NA", skip = 1)

readrパッケージを使った高速な読み込み

readrパッケージの read_csv() 関数は、高速かつ柔軟な読み込みが可能です。


library(readr)
data <- read_csv("data.csv")
head(data)

CSVデータの書き出し

基本的な書き出し方法

write.csv() 関数を使ってデータフレームをCSV形式で保存できます。


# データフレームをCSVファイルに保存
write.csv(data, "output.csv", row.names = FALSE)

主要なオプションの解説

  • row.names: 行番号を含めるかどうか(FALSE: 含めない)。
  • fileEncoding: 書き出し時の文字コード指定。
  • sep: 区切り文字(例: タブ区切りの場合は "\t")。

# UTF-8で保存する例
write.csv(data, "output_utf8.csv", row.names = FALSE, fileEncoding = "UTF-8")

readrパッケージを使った書き出し

readrパッケージの write_csv() 関数も便利です。


write_csv(data, "output.csv")

関数オプションを活用した実践例

以下は、日本語データを正しく読み込み、加工して保存する例です。


# 日本語データを読み込む
data <- read.csv("japanese_data.csv", fileEncoding = "Shift_JIS", na.strings = "NA")

# データの加工
data$new_column <- data$existing_column * 2

# 加工後のデータを書き出す
write.csv(data, "processed_data.csv", row.names = FALSE, fileEncoding = "UTF-8")

トラブルシューティング

  • ファイルが見つからない場合: ファイルパスが正しいか確認してください。絶対パスや相対パスを使用できます。
  • エンコーディングエラー: 日本語データの場合、fileEncoding = "Shift_JIS""UTF-8" を試してください。
  • 列が文字列として認識される問題:: オプション colClasses を指定して列型を明示できます。

応用:大規模なCSVデータの扱い

dplyr, data.table, または {readr} を使用すると、大規模なデータも効率的に扱えます。


library(data.table)
data <- fread("large_data.csv")  # 高速に読み込む
head(data)
fwrite(data, "large_output.csv")  # 高速に書き出す

まとめとベストプラクティス

RでのCSV操作は非常に柔軟で強力です。標準関数や外部パッケージを適切に使い分けることで、効率的かつ正確なデータ処理が可能になります。特に日本語データや大規模データでは、エンコーディングやメモリ効率に注意しましょう。