readrとは#tidyverse
readr パッケージは、Rでデータを効率的に読み書きするためのtidyverseパッケージ群の一つです。高速かつ柔軟なデータ入出力機能を提供し、特にテキストベースのデータファイル(CSV、TSV、区切り文字付きファイル、固定幅ファイルなど)の扱いに優れています。
readr の主な機能は以下のとおりです。
1. 高速なデータ読み込み:
readr は、Rの標準的な読み込み関数(read.csv() など)よりも大幅に高速です。これは、C++ で記述されたバックエンドを使用しているためです。特に大きなファイルを扱う場合にその差が顕著になります。
2. データ型の自動推測:
readr は、ファイルの最初の数行を読み取ることで、各列のデータ型(整数、数値、文字列、論理値、日付など)を自動的に推測します。これにより、ユーザーが明示的にデータ型を指定する必要が少なくなり、手軽にデータを読み込むことができます。
3. 区切り文字の柔軟な指定:
カンマ区切り(CSV)だけでなく、タブ区切り(TSV)、スペース区切り、セミコロン区切りなど、さまざまな区切り文字のファイルを読み込むことができます。read_delim() 関数を使用すれば、任意の区切り文字を指定できます。
4. 文字エンコーディングの自動検出と指定:
readr は、ファイルの文字エンコーディングを自動的に検出します。Shift-JIS、UTF-8 など、様々なエンコーディングに対応しており、文字化けを防ぐことができます。locale() 関数を使って明示的にエンコーディングを指定することも可能です。
5. 欠損値の扱い:
欠損値(NA)を表す文字列を指定できます。デフォルトでは、空文字列("")と "NA" が欠損値として扱われます。na 引数を使って、他の文字列を欠損値として扱うように設定することも可能です。
6. 列の型を明示的に指定:
col_types 引数を使って、各列のデータ型を明示的に指定できます。これにより、自動推測がうまくいかない場合や、特定の型で読み込みたい場合に、正確にデータを読み込むことができます。cols() 関数と型指定関数(col_character()、col_integer()、col_double()、col_logical()、col_date()、col_datetime() など)を組み合わせて使用します。
7. ファイル出力:
write_csv() 関数を使って、データをCSVファイルに書き出すことができます。write_tsv() を使えばタブ区切りファイルとして出力できます。
具体的な関数:
read_csv(): カンマ区切りファイルを読み込む
read_tsv(): タブ区切りファイルを読み込む
read_delim(): 区切り文字を指定してファイルを読み込む
read_fwf(): 固定幅ファイルを読み込む
read_lines(): ファイルを1行ずつ読み込む
read_file(): ファイル全体を1つの文字列として読み込む
write_csv(): データをCSVファイルに書き出す
write_tsv(): データをタブ区切りファイルに書き出す
locale(): 文字エンコーディング、日付フォーマット、小数点記号などを設定
cols(): 列の型を指定
col_character()、col_integer()、col_double()、col_logical()、col_date()、col_datetime(): 各データ型を指定
例:
コード スニペット
library(tidyverse)
# CSVファイルを読み込む
data <- read_csv("data.csv")
# セミコロン区切りのファイルを読み込む
data_semicolon <- read_delim("data.csv", delim = ";")
# データ型を指定して読み込む
data_typed <- read_csv("data.csv", col_types = cols(
name = col_character(),
age = col_integer(),
date = col_date("%Y-%m-%d")
))
# UTF-8エンコーディングで読み込む
data_utf8 <- read_csv("data.csv", locale = locale(encoding = "UTF-8"))
# データをCSVファイルに書き出す
write_csv(data, "output.csv")
readr は、Rでデータを扱う上で非常に重要なパッケージです。これらの機能を理解することで、より効率的にデータ入出力を行うことができるようになります。