相关疑难解决方法(0)

为什么as.Date在字符向量上变慢?

我开始在R中使用data.table包来提高代码的性能.我使用以下代码:

sp500 <- read.csv('../rawdata/GMTSP.csv')
days <- c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")

# Using data.table to get the things much much faster
sp500 <- data.table(sp500, key="Date")
sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")]
sp500 <- sp500[,Weekday:=factor(weekdays(sp500[,Date]), levels=days, ordered=T)]
sp500 <- sp500[,Year:=(as.POSIXlt(Date)$year+1900)]
sp500 <- sp500[,Month:=(as.POSIXlt(Date)$mon+1)]
Run Code Online (Sandbox Code Playgroud)

我注意到as.Date函数完成的转换非常慢,与其他创建工作日的函数相比,等等.为什么会这样?是否有更好/更快的解决方案,如何转换为日期格式?(如果你问我是否真的需要日期格式,可能是的,因为然后使用ggplot2制作情节,这就像这种类型数据的魅力一样.)

更确切地说

> system.time(sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")])
   user  system elapsed 
 92.603   0.289  93.014 
> system.time(sp500 <- sp500[,Weekday:=factor(weekdays(sp500[,Date]), levels=days, ordered=T)])
   user  system elapsed 
  1.938   0.062   2.001 
> system.time(sp500 <- sp500[,Year:=(as.POSIXlt(Date)$year+1900)])
   user  system elapsed 
  0.304   0.001   0.305 
Run Code Online (Sandbox Code Playgroud)

在MacAir i5上,观测值略低于3000000.

谢谢

r data.table

27
推荐指数
4
解决办法
5575
查看次数

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

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

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

posix r date character

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

如何最有效地将字符串"01 Jan 2014"转换为POSIXct即"2014-01-01"yyyy-mm-dd

我已经对这里的问题有了部分答案,据我所知,我已经理解了:如何在data.table中最有效地重构字符串以实现快速时间.

但是,任务已经扩展,需要处理原始格式的变化.

我有一个大型数据集,其中包含以下形式的字符类日期列:

01 Jan 2014
Run Code Online (Sandbox Code Playgroud)

要么:

dd MMM yyyy
Run Code Online (Sandbox Code Playgroud)

我想重组fastPOSIXct哪个只能按POSIXct顺序接受字符输入:

yyyy-mm-dd
Run Code Online (Sandbox Code Playgroud)

上面链接的问题指出,一种有效的方法是使用正则表达式然后提供输出fast.time.在这里我需要扩展它以包括一个方法来理解每月缩写,转换为数字,然后重新排列?我该怎么做?我知道有month.abb一个内置的常量.我应该使用它,还是有更聪明的方法?

regex r date posixct

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

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 ×4

date ×3

posixct ×2

character ×1

data.table ×1

performance ×1

posix ×1

regex ×1