【问题标题】:How do I convert a factor into date format?如何将因子转换为日期格式?
【发布时间】:2013-07-03 23:57:14
【问题描述】:

我从 SQL 查询中导入了一个包含日期的 CSV 文件,但日期实际上是日期时间值,R 似乎无法将它们识别为日期:

> mydate
[1] 1/15/2006 0:00:00
2373 Levels: 1/1/2006 0:00:00 1/1/2007 0:00:00 1/1/2008 0:00:00 ... 9/9/2012 0:00:00
> class(mydate)
[1] "factor"
> as.Date(mydate)
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

如何将mydate 转换为日期格式? (我不需要包括时间部分。)

【问题讨论】:

  • 首先你可能想要as.POSIXct,因为它们是日期时间格式。

标签: r


【解决方案1】:

你可以试试 lubridate 包,让生活更轻松

library(lubridate)

mdy_hms(mydate)

以上将日期格式改为POSIXct

一个示例工作示例:

> data <- "1/15/2006 01:15:00"
> library(lubridate)
> mydate <- mdy_hms(data)
> mydate
[1] "2006-01-15 01:15:00 UTC"
> class(mydate)
[1] "POSIXct" "POSIXt" 

对于带有因子的情况,使用 as.character

data <- factor("1/15/2006 01:15:00")
library(lubridate)
mydate <- mdy_hms(as.character(data))

【讨论】:

    【解决方案2】:

    看看?strptime中的格式

    R> foo <-  factor("1/15/2006 0:00:00")
    R> foo <- as.Date(foo, format = "%m/%d/%Y %H:%M:%S")                                           
    R> foo                                                                                       
     [1] "2006-01-15"                                                                             
    R> class(foo)                                                                                
     [1] "Date"  
    

    请注意,即使foo 以字符开头,这也会起作用。如果使用其他日期格式(as.POSIXltas.POSIXct),它也可以工作。

    【讨论】:

      【解决方案3】:

      你很亲密。 format= 需要添加到as.Date 调用中:

      mydate <- factor("1/15/2006 0:00:00")
      as.Date(mydate, format = "%m/%d/%Y")
      ## [1] "2006-01-15"
      

      【讨论】:

      • 是否有一种基本方法也可以考虑 hms?
      猜你喜欢
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多