Значения, которые уже имеют тип даты-времени, являются символами, поскольку столбец может содержать данные только одного типа, поэтому is.POSIXct
не будет работать. Попробуйте следующее:
library(dplyr)
dd2 %>%
mutate(tt1 = replace(as.POSIXct(tt, format = "%Y-%m-%d %T"),
grepl('^[0-9]*$', tt), NA),
tt = as.POSIXct(as.Date(as.numeric(tt), origin = "1899-12-30")),
final = coalesce(tt1, tt))
Сначала создается столбец (tt1
) типа POSIXct
, который содержит значения данных, которые имеют дату и время, и имеет NA
для дат. Затем мы изменяем даты (которые являются числами) на формат POSIXct
, а затем объединяем столбцы, используя coalesce
.