相关疑难解决方法(0)

将200万行日期字符串加速转换为POSIX.ct

我有一个csv,其中包含大约200万行日期字符串格式:

2012/11/13 21:10:00 
Run Code Online (Sandbox Code Playgroud)

让我们称呼它 csv$Date.and.Time

我想尽快将这些日期(及其附带的数据)转换为xts

我编写了一个脚本,可以很好地执行转换(见下文),但它非常慢,我想尽可能加快速度.

这是我目前的方法.有没有人对如何加快速度提出任何建议?

 dt <- as.POSIXct(csv$Date.and.Time,tz="UTC")

idx <- format(dt,tz=z,usetz=TRUE)
Run Code Online (Sandbox Code Playgroud)

因此脚本将这些日期字符串转换为POSIX.ct.然后使用format(z是表示我要转换的TZ的变量)进行时区转换.然后我做一个常规xts调用,使其成为xts系列,其中包含csv中的其余数据.

这100%工作.它非常非常慢.我试过并行运行它(它没有做任何事情;如果有什么事情让它变得更糟)."慢"是什么意思?

 user    system   elapsed 
155.246  16.430 171.650 
Run Code Online (Sandbox Code Playgroud)

这是一款3GhZ,16GB RAM 2012 mb pro.我可以在Win7机器上使用32GB RAM的类似处理器上获得大约一半

我确信有人有更好的想法 - 我愿意接受建议Rcpp等等.但是,理想情况下,解决方案适用于csv而不是其他一些方法,比如设置数据库.话虽如此,我愿意通过任何方法来实现这一目标,以实现最快的转换.

我非常感谢任何帮助.提前致谢.

posix r time-series posixct xts

12
推荐指数
1
解决办法
2075
查看次数

直接将字符串转换为IDateTime

我正在使用新版本,data.table特别是AWESOME fread功能.我的文件包含作为字符串加载的日期(因为我不知道这样做),看起来像01APR2008:09:00:00.

我需要梳理这些日期时间的data.table,然后排序是有效的投,然后IDateTime格式(或任何ALSE我还不知道).

> strptime("01APR2008:09:00:00","%d%b%Y:%H:%M:%S")
[1] "2008-04-01 09:00:00"

> IDateTime(strptime("01APR2008:09:00:00","%d%b%Y:%H:%M:%S"))
        idate    itime
1: 2008-04-01 09:00:00

> IDateTime("01APR2008:09:00:00","%d%b%Y:%H:%M:%S")
Error in charToDate(x) : 
character string is not in a standard unambiguous format 
Run Code Online (Sandbox Code Playgroud)

看起来我做不到DT[ , newType := IDateTime(strptime(oldType, "%d%b%Y:%H:%M:%S"))].

我的问题是:

  1. 有没有一种方法可以直接转换为IDateTimefread,这样我可以排序后有效?
  2. 如果没有,那么知道我希望能够通过此日期时间列对DT进行排序的最有效方法是什么

datetime r data.table

12
推荐指数
1
解决办法
2751
查看次数

将字符转换为日期*快速*在R中

可能重复:
为什么as.Date在字符向量上变慢?

data.frame从数据库中读取了一个大的(大约60密耳的观察结果)RMySQL.日期是作为字符引入的(似乎没有办法改变这个)所以我用它as.Date来转换日期.然而,这需要很长时间才能进行如此多的观察.有什么办法可以让它更快吗?

posix r date character

9
推荐指数
1
解决办法
4298
查看次数

R data.table fread-读取列为日期

我想读一个文件freaddata.table具有与“YYYY-MM-DD”格式的日期列。默认情况下,fread将列读取为chr。但是,我希望将列设置为Date,与应用时获得的方式相同as.Date

我尝试使用

dt[,starttime.date := as.Date(starttime.date)]
Run Code Online (Sandbox Code Playgroud)

但是运行需要很长时间(我大约有4300万行)。

r data.table

9
推荐指数
1
解决办法
5885
查看次数

在R中有更快的替代POSIXct吗?

我正在读取CSV fread(因为它比read_csv方法更快),时间戳列被视为character类型.

我想将其转换为POSIXct: as.POSIXct(strptime(rawTime, "%Y-%m-%d %H:%M:%OS"))

但是这个POSIXct电话很慢.

在此输入图像描述

有没有更快的替代?

r posixct

2
推荐指数
1
解决办法
613
查看次数

R中更快的日期格式?

我经常需要将(长)字符串转换为 R 中的日期类。我注意到这一步似乎很慢。

例子:

date <- c("5/31/2013 23:30", "5/31/2013 23:35", "5/31/2013 23:40", "5/31/2013 23:45", "5/31/2013 23:50", "5/31/2013 23:55")

Date <- as.POSIXct(date, format="%m/%d/%Y %H:%M")
Run Code Online (Sandbox Code Playgroud)

这不是一个大问题,但我想知道我是否忽略了提高效率的简单途径。有什么提示可以加快速度吗?谢谢。

performance r date posixct

1
推荐指数
1
解决办法
1716
查看次数

标签 统计

r ×6

posixct ×3

data.table ×2

date ×2

posix ×2

character ×1

datetime ×1

performance ×1

time-series ×1

xts ×1