Предполагая, что вы хотите на самом деле преобразовать строку в одном формате в строку в другом формате, вместо того, чтобы использовать ее в качестве (более полезной) фактической даты / времени, вы можете использовать небольшую арифметику c и прерывание строки вместе с mapply
:
splits <- strsplit(as.character(df$Date), " |:")
Hours <- as.numeric(sapply(splits, `[`, 2))
AMPM <- c(" AM", " PM")[Hours %/% 12 + 1]
Hours <- Hours %% 13 + Hours %/% 13
df$Date <- mapply(function(x, y, z) paste0(x[1], " ", y, ":", x[3], z), splits, Hours, AMPM)
df
#> Date Name
#> 1 1/2/2020 4:46 PM A
#> 2 1/2/2020 4:51 PM B
Создано в 2020-02-26 с помощью пакета Представить (v0.3.0)