Мне нужно вычесть два года и добавить один день к датам, как показано ниже. Используя пакет lubridate, я могу вычитать даты из регулярных лет или високосных лет отдельно, но мне нужно делать оба одновременно.Выдача лет и дней в dataframe
df <- data.frame(
ServiceDate = c('2010-02-28','2016-02-29'), stringsAsFactors = F)
df$ServiceDate <- as.Date(df$ServiceDate, "%Y-%m-%d")
library(lubridate)
df$TwoYearsEarlier <- ymd(df$ServiceDate) - years(2) + days(1)
Это то, что я получаю от кода выше
df
ServiceDate TwoYearsEarlier
2010-02-28 2008-02-29
2016-02-29 <NA>
Есть ли способ известково дни для обоих в то же самое время?
Это желаемый результат:
df
ServiceDate TwoYearsEarlier
2010-02-28 2008-02-29
2016-02-29 2014-03-01
В Excel я использую что-то вроде этого
= ДАТА (ГОД (AW2) -2, МЕСЯЦ (AW2), ДЕНЬ (AW2) +1)
это функции векторизованы Я задаюсь вопросом, почему он возвращает 'NA', это возможно, потому что это будущие данные? – SabDeM
Функция 'years' ищет' 2014-02-29' и не может ее найти. Попробуйте обходное решение 'ymd (df $ ServiceDate) - days (731)' –