You may be overcomplicating things, is there any reason you need the stringr package? You can use as.Date
and its format
argument to specify the input format of your string.
df <- data.frame(Date = c("10/9/2009 0:00:00", "10/15/2009 0:00:00")) as.Date(df$Date, format = "%m/%d/%Y %H:%M:%S") # [1] "2009-10-09" "2009-10-15"
Note the Details section of ?as.Date
:
Character strings are processed as far as necessary for the format specified: any trailing characters are ignored
Thus, this also works:
as.Date(df$Date, format = "%m/%d/%Y) # [1] "2009-10-09" "2009-10-15"
All the conversion specifications that can be used to specify the input format
are found in the Details section in ?strptime
. Make sure that the order of the conversion specification as well as any separators correspond exactly with the format of your input string.
More generally and if you need the time component as well, use as.POSIXct
or strptime
:
as.POSIXct(df$Date, "%m/%d/%Y %H:%M:%S") strptime(df$Date, "%m/%d/%Y %H:%M:%S")
I’m guessing at what your actual data might look at from the partial results you give.