Size: a a a

R (язык программирования)

2021 February 01

A

Alexey in R (язык программирования)
попробуй as_date из пакета lubridate, он мне частенько помогает фиксить такое
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Alexander Semenov
Не очень понятно, где тут можно ошибиться `mutate(end_date = as.Date(ifelse(is.na(purch_trans), purch_other,
                          purch_trans), origin = "1970-01-01"))`
Так dttm в числовом формате timestamp, до секуднд. А в as.Date надо передавать с точностью до дня. Советую над ifelse попробовать as.POSIXct
источник

AS

Alexander Semenov in R (язык программирования)
Alexey
попробуй as_date из пакета lubridate, он мне частенько помогает фиксить такое
Ага, нагородил костылей из as_date и ymd. Сработало. Разбираться в причинах я, конечно же, не буду.
источник

AS

Alexander Semenov in R (язык программирования)
Дмитрий Володин
Так dttm в числовом формате timestamp, до секуднд. А в as.Date надо передавать с точностью до дня. Советую над ifelse попробовать as.POSIXct
Тоже такая мысль мелькнула.
источник

A

Alexey in R (язык программирования)
Alexander Semenov
Ага, нагородил костылей из as_date и ymd. Сработало. Разбираться в причинах я, конечно же, не буду.
всегда так делаю 😂
источник

AS

Alexander Semenov in R (язык программирования)
Странно, что впервые с таким сталкиваюсь.
источник

JL

Julia Laryushina in R (язык программирования)
Alexander Semenov
Странно, что впервые с таким сталкиваюсь.
источник

JL

Julia Laryushina in R (язык программирования)
dplyr::if_else работает ок
источник

JL

Julia Laryushina in R (язык программирования)
источник

EP

Ed P in R (язык программирования)
Alexander Semenov
Не очень понятно, где тут можно ошибиться `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 оба в виде дат в одном и том же формате, то не должно быть проблем...
источник

JL

Julia Laryushina in R (язык программирования)
они есть.
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Alexander Semenov
Тоже такая мысль мелькнула.
А чего тут думать? as.Date принимает unix date, количество дней со старта юникс эры. Сегодня это 18659. А dttm - это unix timestamp: количество секунд с начала unix эры. Для сегодня 16:00 - 1612184714. И вот вы пытаетесь вот эти 1612184714 запихнуть в качестве количества ДНЕЙ, крошедших с 1 января 1970 года))
источник

JL

Julia Laryushina in R (язык программирования)
@semenoffalex , используйте if_else
источник

JL

Julia Laryushina in R (язык программирования)
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Дмитрий Володин
А чего тут думать? as.Date принимает unix date, количество дней со старта юникс эры. Сегодня это 18659. А dttm - это unix timestamp: количество секунд с начала unix эры. Для сегодня 16:00 - 1612184714. И вот вы пытаетесь вот эти 1612184714 запихнуть в качестве количества ДНЕЙ, крошедших с 1 января 1970 года))
Я, это, без наездов) Операции с датой и временем - это вообще большая головная боль))
источник

JL

Julia Laryushina in R (язык программирования)
в данном случае проблема НЕ с as.Date, а с самим ifelse.
Даты по дороге теряют класс.
источник

AS

Alexander Semenov in R (язык программирования)
Дмитрий Володин
Я, это, без наездов) Операции с датой и временем - это вообще большая головная боль))
Ну я к тому, что подумать-то подумал, а мер по итогам никаких не предпринял.
источник

AS

Alexander Semenov in R (язык программирования)
Спасибо! И тут Хадли подсуетился для сирых и убогих.
источник

JL

Julia Laryushina in R (язык программирования)
Alexander Semenov
Спасибо! И тут Хадли подсуетился для сирых и убогих.
Обращайтесь=)
источник

JL

Julia Laryushina in R (язык программирования)
сирыми и убогими дорога в рай выстелена, всё ок.
источник