Не очень понятно, где тут можно ошибиться `mutate(end_date = as.Date(ifelse(is.na(purch_trans), purch_other, purch_trans), origin = "1970-01-01"))`
я с похожей фигней сталкивался (с origin в as.Date). Проблема была в том, что один из аргументов ifelse был не в формате даты. По идее если у вас purch_other или purch_trans оба в виде дат в одном и том же формате, то не должно быть проблем...
А чего тут думать? as.Date принимает unix date, количество дней со старта юникс эры. Сегодня это 18659. А dttm - это unix timestamp: количество секунд с начала unix эры. Для сегодня 16:00 - 1612184714. И вот вы пытаетесь вот эти 1612184714 запихнуть в качестве количества ДНЕЙ, крошедших с 1 января 1970 года))
А чего тут думать? as.Date принимает unix date, количество дней со старта юникс эры. Сегодня это 18659. А dttm - это unix timestamp: количество секунд с начала unix эры. Для сегодня 16:00 - 1612184714. И вот вы пытаетесь вот эти 1612184714 запихнуть в качестве количества ДНЕЙ, крошедших с 1 января 1970 года))
Я, это, без наездов) Операции с датой и временем - это вообще большая головная боль))