我有一个以下列格式提供的日期时间:
ex <-2008123118
我正在尝试将其转换为日期时间格式。我试试:
mytime2 <- as.POSIXct(ex, format = "%Y%m%d%H")
但收到错误:
Error in as.POSIXct.numeric(ex, format = "%Y%m%d%H") :
'origin' must be supplied
错误似乎是直截了当的,但唯一的问题是如果我不知道原点的话。例如,我的代码的这部分将进入一个更大的代码,将处理大量的文件。
我希望我的例子能够回归:
2008-12-31 18:00
这可能吗?
答案 0 :(得分:5)
有两个版本的as.POSIXct
幕后工作,as.POSIXct.numeric
和as.POSIXct.character
,您试图同时调用它们。因为这个价值来自&#34;数字&#34;它传递给as.POSIXct.numeric
,这实际上是错误的原因,因为as.POSIXct.numeric
没有类似日期值的检测算法,也没有&#34;格式&#34;参数。将它强加给&#34;角色,一切都很好:
> ex <-2008123118
> mytime2 <- as.POSIXct(as.character(ex), format = "%Y%m%d%H")
> mytime2
[1] "2008-12-31 18:00:00 PST"
答案 1 :(得分:2)
以下是lubridate
功能ymd_h
的示例:
library(lubridate)
ymd_h(ex)
[1] "2008-12-31 18:00:00 UTC"
这里是基础R解决方案
strptime(ex, format = "%Y%m%d%H")
[1] "2008-12-31 18:00:00 CET"
答案 2 :(得分:0)
您可以在基础R中尝试以下代码:
> ex <-2008123118
> as.POSIXct(strptime(ex, format = "%Y%m%d%H")) #this gives you additional seconds
"2008-12-31 18:00:00 EST"
> strftime(as.POSIXct(strptime(ex, format = "%Y%m%d%H")), format = "%Y-%m-%d %H:%M") #this gives your desired format
"2008-12-31 18:00"
希望这有帮助。