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?
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