導入
fread() はRで用いる関数で、.csv, .tsv などのテキストファイルから2次元のテーブル形式にデータを読み込みます。
同系統の関数read.table, read.csvより読み込み速度が早いメリットがあります。
data.table というパッケージに同梱されているので、インストール未完の場合は、先にインストールしましょう。
R
install.packages("data.table")
library(data.table)
大量データの読み込み
- 大量データを読み込むときはdata.tableのfread関数を使うのがおすすめ
- 試しに270万レコードを読み込ませた
read.csv()の場合59.15秒
R
temp8 <- read.csv(`2410689.csv`, encoding=`UTF-8`, stringsAsFactors=F, sep=`,`)
fread()の場合6.39秒
R
library(data.table)
temp7 <- fread(`2410689.csv`, stringsAsFactors=FALSE, encoding=`UTF-8`, sep=`,`)
data.tableとdata.frameの違い
- data.tableパッケージは大規模データを高速に処理できるようにR組み込みのdata.frameクラスを拡張したもの
- data.frame()関数と同じようにdata.table()関数によりdata.tableオブジェクトを作成できる
- fread()関数によってディスクから大規模データを高速に読み込むことができる
- read.table()などよりも自由度は落ちるが、処理速度は遥かに高速
注意点
- data.table型でdata.frame型と同じ処理をしても出来ない場合がある
data.frame型
temp <- read.csv(`Spdata.csv`, stringsAsFactors=FALSE, sep=`,`)
temp2 <- temp[, (colnames(temp)%in%c(`Date`, `Rank`))]
names(temp2)
## [1] `Date` `Rank`
head(temp2)
## 1 1日 5
## 2 1日 5
## 3 1日 5
## 4 1日 5
## 5 1日 5
## 6 1日 5
data.table型
library(data.table)
temp <- fread(`Spdata.csv`, stringsAsFactors=FALSE, sep=`,`)
temp2 <- temp[, (colnames(temp)%in%c(`Date`, `Rank`))]
names(temp2)
## NULL
head(temp2)
## [1] TRUE TRUE FALSE FALSE
fread関数でdata.frame型で読み込みたいときは。。。
- data.table = FALSE を入れると大丈夫!!
library(data.table)
temp <- fread(`Spdata.csv`, stringsAsFactors=FALSE, sep=`,`, data.table = FALSE)
temp2 <- temp[, (colnames(temp)%in%c(`Date`, `Rank`))]
## [1] `Date` `Rank`
head(temp2)
## Date Rank
## 1 1日 5
## 2 1日 5
## 3 1日 5
## 4 1日 5
## 5 1日 5
## 6 1日 5
参考
http://statsbeginner.hatenablog.com/entry/2014/09/06/170214
http://kohske.github.io/ESTRELA/201410/index.html