I am working with a large list of dataframes that use inconsistent date formats. I would like to conditionally mutate across the list so that any dataframe that contains a string will use one date format, and those that do not contain the string use another format. In other words, I want to distinguish between dataframes launched in year 2019 (which use mdy) and those launched in all others years (which use dmy).
The following code will conditionally mutate rows within a dataframe, but I am unsure how to conditionally mutate across the entire column.
dataframes %>% map(~.x %>% 
    mutate(date_time = if_else(str_detect(date_time, "/19 "), 
                               mdy_hms(date_time), dmy_hms(date_time)))
Thank you!
edit
Data and code example. There are dataframes that contain a mixture of years.
library(tidyverse)
library(lubridate)
dataframes <- list(
  tibble(date_time = c("07/06/19 01:00:00 PM", "07/06/20 01:00:00 PM"), num = 1:2), # July 6th
  tibble(date_time = c("06/07/20 01:00:00 PM", "06/07/21 01:00:00 PM"), num = 1:2)  # July 6th 
)
dataframes %>% 
  map(~.x %>% 
        mutate(date_time = if_else(str_detect(date_time, "/19 "), 
                                   mdy_hms(date_time), dmy_hms(date_time)),
               date = date(date_time),
               month = month(date_time),
               doy = yday(date_time)))
                   
[[1]]
# A tibble: 2 × 5
  date_time             num date       month   doy
  <dttm>              <int> <date>     <dbl> <dbl>
1 2019-07-06 13:00:00     1 2019-07-06     7   187
2 2020-06-07 13:00:00     2 2020-06-07     6   159
[[2]]
# A tibble: 2 × 5
  date_time             num date       month   doy
  <dttm>              <int> <date>     <dbl> <dbl>
1 2020-07-06 13:00:00     1 2020-07-06     7   188
2 2021-07-06 13:00:00     2 2021-07-06     7   187
 
    