R: количество дней до конца месяца с использованием lubridate - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь подсчитать количество дней, оставшихся в текущем месяце, используя пакет lubridate. Я смог успешно выполнить sh, используя приведенный ниже код; однако, это кажется очень многословным и трудным для чтения.

as.duration(interval(start = ymd(Sys.Date()), end =  ceiling_date(Sys.Date(), unit = "month"))) / ddays(1)

Есть ли более простой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

В lubridate вы можете сделать:

days_in_month(now()) - mday(now())

Хотя это дает вам именованный вектор, поэтому лучше сделать

as.numeric(days_in_month(now()) - mday(now()))
#> [1] 27

Спасибо @ H1 за указание, что мы можем использовать now() вместо month(now())

0 голосов
/ 05 марта 2020

Исходя из предложения @WaltS, мы можем использовать ceiling_date с «месяцем» в качестве единицы, чтобы получить дату начала следующего месяца, вычесть 1 день из нее, чтобы получить дату конца текущего месяца, а затем вычесть сегодняшнюю дату, чтобы получить оставшиеся дней в месяце.

as.integer(ceiling_date(today(), "months") - today() - 1)
...