在日期R数据框中转换不同的字符串类型

mik*_*.dl 1 datetime r date lubridate

我有一个杂乱的数据框,有两列:

DF<-data.frame(x=seq(100,105,1),y=c("3/25/2014 12:56","3/25/2014 14:18","3/25/2014 14:18","3/25/2014 14:18","3/25/2014 14:18","2014-03-25 14:19:08.043"))

    x                       y
1 100         3/25/2014 12:56
2 101         3/25/2014 14:18
3 102         3/25/2014 14:18
4 103         3/25/2014 14:18
5 104         3/25/2014 14:18
6 105 2014-03-25 14:19:08.043
Run Code Online (Sandbox Code Playgroud)

我想将y列转换为R日期,以便:

    x                  y
1 100         2014-03-25
2 101         2014-03-25
3 102         2014-03-25
4 103         2014-03-25
5 104         2014-03-25
6 105         2014-03-25
Run Code Online (Sandbox Code Playgroud)

为了做到这一点,我可以使用Lubridate的函数parse_date_time作为前5个元素

as.Date(parse_date_time(DF$y[1:5], orders="mdy hm"))
Run Code Online (Sandbox Code Playgroud)

并直接将函数as.Date用于最后一个:

as.Date(DF$y[6], orders="mdy hm")
Run Code Online (Sandbox Code Playgroud)

我可以通过创建一个for和if循环来做到这一点,但是,我正在寻找一个更优雅的矢量化解决方案.

你有好主意吗?

谢谢

Rol*_*and 5

我随时都会使用包:

library(anytime)
anydate(DF$y)
#[1] "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25" "2014-03-25"
Run Code Online (Sandbox Code Playgroud)