在R中修改日期格式

在R中修改日期格式,r,strptime,R,Strptime,所以我有一个数据框,它有日期列,所有的列都可以有不同的格式 > DateCol1 DateCol2 DateCol3 DateCol4 DateCol5 > 24-08-2011 2011-12-24 08/1900/24 12/13/2011 Jan 31 1895 我知道我可以单独使用strtime/as.Date/as.POSIXct,但由于数据帧将在运行时生成,因此我事先不知道内容 那么,如何将它们转换为通用函

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

> DateCol1      DateCol2     DateCol3       DateCol4      DateCol5
> 24-08-2011   2011-12-24     08/1900/24    12/13/2011    Jan 31 1895
我知道我可以单独使用strtime/as.Date/as.POSIXct,但由于数据帧将在运行时生成,因此我事先不知道内容


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

尝试使用
lubridate
软件包中的
guess\u格式

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))
库(lubridate)

fmts
lubridate
是您的朋友
install.packages(“lubridate”)
无论您使用的是什么软件包,这个任务听起来几乎不可能自动完成。如果没有你自己的输入,你怎么确定
01-02-2013
2月1日
还是
1月2日
?你是对的,我想我可能需要想出一些预定义的常量格式这可能是一个可行的解决方案,但这仍然取决于我对所有可能格式的了解……但是我正如@thelatemail评论的那样,如果没有一些输入,它可能会非常令人畏惧。你要求一台机器做出决定,却没有给它做出决定所需的所有信息。关于
guess_formats
的工作原理是,您可以给它几个选项来尝试,它将返回有效(和无效)的内容。玩转它,添加一些人类知识;)