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