Convert dd/mm/yy and dd/mm/yyyy to Dates

后端 未结 6 1325
挽巷
挽巷 2020-11-28 15:39

I have some a character vector with dates in various formats like this

dates <- c(\"23/11/12\", \"20/10/2012\", \"22/10/2012\" ,\"23/11/12\")
6条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-28 16:21

    You can use parse_date_time from lubridate:

    some.dates <- c("23/11/12", "20/10/2012", "22/10/2012" ,"23/11/12")
    parse_date_time(some.dates,c('dmy'))
    [1] "2012-11-23 UTC" "2012-10-20 UTC" "2012-10-22 UTC" "2012-11-23 UTC"
    

    But , Note that the order of format is important :

    some.dates <- c("20/10/2012","23/11/12",  "22/10/2012" ,"23/11/12")
    parse_date_time(some.dates,c('dmY','dmy'))
    
    [1] "2012-10-20 UTC" "2012-11-23 UTC" "2012-10-22 UTC" "2012-11-23 UTC"
    

    EDIT

    Internally parse_date_time is using guess_formats (which I guess uses some regular expressions):

    guess_formats(some.dates,c('dmy'))
           dmy        dmy        dmy        dmy 
    "%d/%m/%Y" "%d/%m/%y" "%d/%m/%Y" "%d/%m/%y" 
    

    As mentioned in the comment you can use parse_date_time like this:

    as.Date(dates, format = guess_formats(dates,c('dmy')))
    

提交回复
热议问题