6

在 data.frame 中,我有一个日期时间戳,格式如下:

head(x$time)
[1] "Thu Oct 11 22:18:02 2012" "Thu Oct 11 22:50:15 2012" "Thu Oct 11 22:54:17 2012"
[4] "Thu Oct 11 22:43:13 2012" "Thu Oct 11 22:41:18 2012" "Thu Oct 11 22:15:19 2012"

每次我尝试使用as.Datelubridatezoo转换它时,我都会得到NAs 或 Errors。

将这个时间转换为可读形式的方法是什么?

我试过了:

 Time<-strptime(x$time,format="&m/%d/%Y  %H:$M")
    x$minute<-parse_date_time(x$time)
    x$minute<-mdy(x$time)
    x$minute<-as.Date(x$time,"%m/%d/%Y %H:%M:%S")
    x$minute<-as.time(x$time)
    x$minute<-as.POSIXct(x$time,format="%H:%M")
    x$minute<-minute(x$time)
4

2 回答 2

18

你真正想要的是strptime()。尝试类似:

strptime(x$time, "%a %b %d %H:%M:%S %Y")

作为您可以做的有趣事情的一个例子,请strptime()考虑以下内容:

thedate <- "I came to your house at 11:45 on January 21, 2012."
strptime(thedate, "I came to your house at %H:%M on %B %d, %Y.")
# [1] "2012-01-21 11:45:00"
于 2012-10-12T17:07:14.813 回答
0

另一种选择是使用lubridate::parse_date_time()

library(lubridate)
parse_date_time(x$time, "%a %b %d %H:%M:%S %Y")

或者更简单地说:

parse_date_time(x$time, "abdHMSY")

从文档:

它在两个方面与 base::strptime() 不同。首先,它允许指定格式出现的顺序,而无需包含分隔符和 % 前缀。这样的格式化参数被称为“顺序”。其次,它允许用户指定几种格式顺序来处理异构日期时间字符表示。

文档包含 lubridate 识别的所有格式(“abdHMSY”等)。

于 2018-06-21T23:29:37.373 回答