0
我有一个包含500万行和更多行的数据集,我想从两列创建时间戳,一列使用日期,另一列使用时间值。从日期和时间列中快速创建data.table中的时间戳列
当我使用fread()函数将csv读入R时,所有列都是字符格式,因此我使用data.table将它们转换为相关格式,这对于那种事情来说非常快:
nf[, (dcols):= lapply(.SD,ymd),.SDcols=dcols] #using the ymd() function from lubridate to change date columns
我的下一个步骤是创建一个时间戳,我在下面的方式做:
nf[,start_timestamp := as.POSIXct(paste(start_date,start_time))]
如果我解决此函数调用运行Sys.Time(),我得到的3.843分钟一个时间差。这是一段等待,所以我想知道是否有人可以建议一个基于data.table的解决方案,这将允许我更快地将这两列组合成一个时间戳?
你应该做一个重复的例子,更快速地创建时间戳:一些可用的数据,N'的'功能和'nc'(行和列)以及适当的库调用。 Data.table包含一些日期时间功能,但它涉及将日期和时间保留在单独的列中。参见'IDateTime'。 – Frank
请参阅[本](http://stackoverflow.com/a/12898544/3001626)。我的猜测是'as.POSIXct'是你的瓶颈。另外,我不确定你在用什么'ymd'。 –
@DavidArenburg我认为'as.POSIXct'一定是瓶颈。我使用'ymd'将日期格式从字符更改为日期 - 我发现它比'as.Date'快。 @Frank - 我将创建一些示例数据并编辑原始帖子。 –