I have a dataframe, df, which has factor variable for date in the following format:
2015-12-15 10:00:00
2015-12-19 12:00:00
2015-12-20 20:00:00
If we have a vector like "v1", by using strptime we get NA for those elements that don't have the correct format
strptime(v1, "%d/%m/%Y %H:%M:%S", tz = "UTC")
#[1] "2015-12-19 12:00:00 UTC" NA
One way to correct this will be to paste the "00:00:00" string for those that doesn't have that
v1[!grepl(":", v1)] <- paste(v1[!grepl(":", v1)], "00:00:00")
strptime(v1, "%d/%m/%Y %H:%M:%S", tz = "UTC")
#[1] "2015-12-19 12:00:00 UTC" "2015-12-19 00:00:00 UTC"
Or if we use lubridate, the parse_date_time can take multiple formats
library(lubridate)
parse_date_time(v1, guess_formats(v1, c("%d/%m/%Y %H:%M:%S", "%d/%m/%Y")))
#[1] "2015-12-19 12:00:00 UTC" "2015-12-19 00:00:00 UTC"
v1 <- c("19/12/2015 12:00:00", "19/12/2015")