Функция lubridate
%m+%
может быть полезна здесь:
Добавить и вычесть месяцы до даты, не превышающей последний день нового месяца
blockquote>as.Date("2014-12-31") %m+% months(6) # [1] "2015-06-30"
Чтобы также обрабатывать второй случай, вам нужно округлить до ближайшего месяца, используя
ceiling_date
, и вычесть один день с помощьюdays
.ceiling_date(as.Date("2014-02-28") %m+% months(6), unit = "month") - days(1) # [1] "2014-08-31"