【问题标题】:Converting char to date time将字符转换为日期时间
【发布时间】:2012-10-12 17:01:31
【问题描述】:

在 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 或错误。

有什么办法可以把这个时间转换成可读的形式?

我试过了:

 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)

【问题讨论】:

  • 您能分享一些您尝试过的步骤吗?另外,请注意as.dateas.Date 不同。
  • 你试过什么?查看strptimeformat 参数以提供给as.Date 和其他人。

标签: r


【解决方案1】:

你真正想要的是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"

【讨论】:

    【解决方案2】:

    另一种选择是使用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”等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-17
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      相关资源
      最近更新 更多