使用 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
  • 預設為 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" 是預設值
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)

  • squash 會把 yyyy-mm-dd hh:mm:ss 壓成 yyyymmddhhmmss
  • 讀取為整數。可用取餘運算快速取出年、月等,例如:20160912 %/% 10000 = 2016
  • 支援毫秒(ms)精度
  • fread 會自動把 POSIXct(17 位含毫秒)讀為 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 以「自相關 epoch 起算的天數(date)」或秒數(time、datetime)表示
  • 相對應的 epoch 分別為 1970-01-0100:00:001970-01-01T00:00:00Z(對應 datetimedatetime
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...