У меня есть исходный столбец в кадре данных, где даты могут быть в формате "dd.mm.yyyy" или в формате Excel с 5-значным числом git. Следовательно, я хотел бы проверить с помощью ifelse
, как выглядит элемент с str_detect
, а затем использовать соответствующее преобразование для каждого.
df$date <- ifelse(str_detect(df$date, "[0-9]{2}.[0-9]{2}.[0-9]{4}") == TRUE,
as.Date(df$date, format = "%d.%m.%Y"),
as.Date(as.numeric(df$date), origin = "1899-12-30"))
Хотя обе функции преобразования работают как задумано, когда я помещаю их в оператор ifelse
, я получаю странные результаты - в основном 1 января 2019 года становится "17897". Может кто-нибудь объяснить, почему это происходит и как я могу заставить это работать? Спасибо
Редактировать: фрагмент кода
df <- c("01.01.2019", "43867")
df <- ifelse(str_detect(df, "[0-9]{2}.[0-9]{2}.[0-9]{4}") == TRUE,
as.Date(df, format = "%d.%m.%Y"),
as.Date(as.numeric(df), origin = "1899-12-30"))
Желаемый вывод: "2019-01-01" "2020-02-06"
Результирующий вывод 17897 18298
Где, если я применю первую (да) функцию без ifelse
, я получу "2019-01-01" NA
, и никакая функция не приводит к NA "2020-02-06"