【问题标题】:Modify date format in R修改R中的日期格式
【发布时间】:2013-09-27 03:09:26
【问题描述】:

所以我有一个包含日期列的数据框,所有列都可以有不同的格式

> DateCol1      DateCol2     DateCol3       DateCol4      DateCol5
> 24-08-2011   2011-12-24     08/1900/24    12/13/2011    Jan 31 1895

我知道我可以为它们中的每一个单独使用 strptime/as.Date/as.POSIXct 但由于数据帧将在运行时生成,我不会事先知道内容

那么如何将它们全部转换为通用函数/语句中的默认 R 格式?

【问题讨论】:

  • lubridate 是你的朋友。 install.packages("lubridate")
  • 不管你使用什么包,这个任务听起来几乎不可能自动完成。在没有您自己的至少一些输入的情况下,如何确定01-02-20131st of February 还是2nd of January
  • 你是对的,我想我可能需要想出一些预定义的常量格式

标签: r strptime


【解决方案1】:

尝试使用lubridate 包中的guess_formats

library(lubridate)
fmts <- lapply(dat, guess_formats, c("m d y", "d-M-y", "Y-m-d",  "m Y d"))
fmts <- lapply(fmts, "[[", 1)
as.data.frame(mapply(parse_date_time, x=dat, orders=fmts))

【讨论】:

  • 这可能是一个可能的解决方案,但它仍然取决于我对所有可能格式的了解......但我想正​​如@thelatemail 评论的那样,如果没有一些输入可能会非常令人生畏
  • 当然。您是在要求机器做出决定,但没有提供做出此类决定所需的所有信息。 guess_formats 的工作原理是你可以给它几个选项来尝试,它会返回有效的(和无效的)。玩弄它,并添加一些人类知识;)
猜你喜欢
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多