Разница между датами в формате лет-месяцев-дней - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь повторить то, что делает этот веб-сайт - получить разницу между двумя датами, выраженными в годах-месяцах-днях.

Мне удалось получить разницу лет-месяцев в довольно грязной формеспособ:

paste(
  floor(
    interval(as.Date("1985-09-17"),
             as.Date("1996-03-13")) 
        %/% months(1) /12), ' years, ',
      ifelse(
        ceiling(((interval(as.Date("1985-09-17"),
                           as.Date("1996-03-13")) 
                 %/% months(1) /12) %% 1 )*12)<10,
         paste0('0',ceiling(((interval(as.Date("1985-09-17"),
                                       as.Date("1996-03-13")) 
                             %/% months(1) /12) %% 1)*12)),
          ceiling(((interval(as.Date("1985-09-17"),
                             as.Date("1996-03-13")) 
                   %/% months(1) /12) %% 1 )*12)),' months', sep='')



[1] "10 years, 04 months"

Есть ли лучший способ сделать это?Я нашел похожий вопрос здесь , но он не имеет удовлетворительного ответа, и я предполагаю, что с тех пор было разработано много новых пакетов, так что, возможно, есть простой способ сделать это

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете попробовать что-то вроде следующего:

as.Date(as.numeric(as.Date("1996-03-13"))
        -as.numeric(as.Date("1985-09-17")), 
        origin = "2000-01-01")

и затем считать годы, месяцы и дни, начиная с начала координат, как вашу разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...