如何在R中使用fread导入时在colClasses参数中使用自定义创建的POSIXlt Date类?

时间:2014-10-20 10:21:40

标签: r date import data.table posixlt

我正在尝试将格式化为字符的日期字段导入POSIXlt类,同时导入数据本身。我不想将日期作为字符导入并在以后转换为POSIXlt,而是希望一步完成,因为我的数据非常大(4 GB以上)。下面是相同的代码。

在此代码中,我定义了一个新的' myDate'类并使用它传递给colClasses参数。此方法适用于read.delim,但不适用于来自fread pkg的data.table

如果这可以与fread一起使用会很棒,因为如果可行,我将使用fread方法保存至少20分钟的时间。你可以让它与fread合作或提出更好的选择吗?

library (data.table)
library (lubridate)
setClass ('myDate')

# create custom 'myDate' class. Having "Date" or "POSIXlt" in colClasses argument of read.table does not work
setAs ("character","myDate", function(from) as.POSIXlt(fast_strptime(from, "%Y-%m-%d")) )   

ccs <- c ("logical", "myDate", "myDate", "character") 

# fread() Does NOT Work 
rawdata <- fread ("filepath/filename.txt", colClasses=css, sep='|', header=FALSE,)) 

# WORKS!
rawdata <- read.delim ("filepath/filename.txt", colClasses=ccs, sep='|', header=FALSE) 

0 个答案:

没有答案