Ваш код работает нормально для меня.
librayr(dplyr)
df <- tibble(
birth = "2-Jan-01"
)
Оставьте ваш код нетронутым:
df %>%
mutate(birth_date = as.Date(
as.character(birth),
tryFormats = c("%y-%b-%d", "%b-%y-%d")
))
Я получаю:
birth birth_date
<chr> <date>
1 2-Jan-01 2002-01-01
(обратите внимание, что я использовал тиббл, но он работает точно так же с традиционным фреймом данных).
Теперь нет смысла использовать as.character()
в вашем коде, поскольку "birth" уже имеет символ класса. Итак, удалив его, мы имеем:
df %>%
mutate(
birth_date = as.Date(
birth,
tryFormats = c("%y-%b-%d", "%b-%y-%d")
))
Что дает тот же результат.
И если вы не хотите сохранять старый столбец «рождение», вы можете использовать transmute()
вместо:
df %>%
transmute(
birth_date = as.Date(
birth,
tryFormats = c("%y-%b-%d", "%b-%y-%d")
))
Что дает:
birth_date
<date>
1 2002-01-01