如何在data.table中使用fast_strtime?

问题描述

我需要帮助,以便在data.table中使用fast_strptime来转换日期格式的字符串, 我尝试了以下解决方案:

dt<-data.table(Month_Year=c("JAN 2020","FEB 2020","MAR 2020"),val=c(1:3))
dt[,Date:=as.POSIXct(fast_strptime(Month_Year,format= "%^b %Y"))]
dt$Date<-fast_strptime(dt$Month_Year,format="%b %Y")

他们都不工作,请给予任何帮助! 预先感谢!

解决方法

好吧,我找到了一种解决方法,虽然没有使用fast_strptime()函数,但它符合我的期望:

dt[,Date:=as.Date(paste("01",Month_Year,sep=" "),format = "%d %b %Y")] 

我希望它能帮助面临相同问题的其他人。

但是我仍然对如何结合使用data_table和fast_striptime感兴趣。 :)

,

这很好

dt[,Date:=as.POSIXct(lubridate::fast_strptime(Month_Year,"%b %Y"))]

问题是fast_strptime()生成POSIXlt对象,而不是POSIXct对象。 POSIXlt基本上是一个整数列表,因此data.table会引起混淆,而POSIXct是单个数字值。

虽然我可能会使用parse_date_time

dt[,Date:=lubridate::parse_date_time(Month_Year,"my")]