fwrite()による高速データ書き込み

R の data.table によるデータ操作

Matt Dowle, Arun Srinivasan

Instructors, DataCamp

fwrite

セカンダリセパレータ(|)を使用したlist列の書き込みが可能

dt <- data.table(id = c("x", "y", "z"), val = list(1:2, 3:4, 5:6))
fwrite(dt, "fwrite.csv")
fread("fwrite.csv")
id  val
 x  1|2
 y  3|4
 z  5|6
R の data.table によるデータ操作

日付・日時列(ISO)

  • fwrite()は日付・日時形式の書き込み方法としてISOsquashepochの3種類を提供
  • デフォルトはISOで、ISO標準の使用を推奨
R の data.table によるデータ操作

日付と時刻

now <- Sys.time()
dt  <- data.table(date = as.IDate(now), 
                  time = as.ITime(now), 
                  datetime = now)
dt
      date     time              datetime
2018-12-17 19:54:51   2018-12-17 14:54:51
R の data.table によるデータ操作

日付・日時列(ISO)

# "ISO" is default
fwrite(dt, "datetime.csv", dateTimeAs = "ISO")

fread("datetime.csv")
      date       time                      datetime
2018-12-17   19:55:39   2018-12-17T19:55:39.735036Z
R の data.table によるデータ操作

日付・日時列(Squash)

  • squashyyyy-mm-dd hh:mm:ssyyyymmddhhmmssとして書き込む
  • 整数として読み込まれ、剰余演算で月・年などを簡単に抽出可能(例:20160912 %/% 10000 = 2016
  • ミリ秒(ms)精度にも対応
  • POSIXct型(ms精度で17桁)はfreadにより自動的にinteger64として読み込まれる
R の data.table によるデータ操作

日付・日時列(Squash)

fwrite(dt, "datetime.csv", dateTimeAs = "squash")

fread("datetime.csv")

       date   time          datetime
1: 20181217 195539 20181217195539735
20181217 %/% 10000 
[1] 2018
R の data.table によるデータ操作

日付・日時列(Epoch)

  • epochは関連するエポックからのdays数(日付)または秒数(時刻・日時)を表す
  • 基準エポックはdate1970-01-01time00:00:00datetime1970-01-01T00:00:00Z
R の data.table によるデータ操作

日付・日時列(Epoch)

fwrite(dt, "datetime.csv", dateTimeAs = "epoch")
fread("datetime.csv")
 date  time   datetime
17882 71871 1545076672
R の data.table によるデータ操作

練習しましょう!

R の data.table によるデータ操作

Preparing Video For Download...