Fastest way to parse a date-time string to class Date

32,761

Note that as.Date will ignore junk after the date so this takes less than 10 seconds on my not particularly fast laptop:

xx <- rep("10/17/2017 12:00:00 AM", 5000000) # test input
system.time(as.Date(xx, "%m/%d/%Y"))
## user  system elapsed 
## 9.57    0.20    9.82 
Share:
32,761
phil_t
Author by

phil_t

Updated on March 12, 2021

Comments

  • phil_t
    phil_t about 3 years

    I have a column with dates as character in the format 10/17/2017 12:00:00 AM. I want parse the string and keep only the date part as class Date, i.e. 2017-10-17. I am using -

    df$ReportDate = as.Date(df$ReportDate, format = "%m/%d/%Y %I:%M:%S %p") 
    df$ReportDate = as.Date(format(df$ReportDate, "%Y-%m-%d"))
    

    this works, but the dataframe has over 5 million rows so this takes close to two mins.

      user  system elapsed 
    104.73    0.55  105.46 
    

    Is there a faster and more efficient way to do this?