Введите месяц и получите первый и последний день в этом году - PullRequest
0 голосов
/ 16 октября 2018

Есть ли способ в R получить первый и последний день за указанный месяц.Например.

Input: September 2018 or any other format to specify month and year
Expected output:
1st day function (Input) -> 01-Sep-2018 or any other valid date format
Last day function (Input) -> 30-Sep-2018 or any other valid date format

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Мы можем создать функцию в базе R

get_first_and_last_date <- function(month_year) {
   start_date = as.Date(paste0("01 ", month_year), "%d %b %Y")
   end_date = (seq(start_date, length.out = 2, by = "month") - 1)[2]
   c(start_date, end_date)
}

get_first_and_last_date('Dec 2018')
#[1] "2018-12-01" "2018-12-31"

get_first_and_last_date('Sep 2016')
#[1] "2016-09-01" "2016-09-30"

В любом формате, который вы вводите, убедитесь, что он согласован во всем.Здесь я рассмотрел ввод всегда будет названием месяца и полного года.

0 голосов
/ 16 октября 2018

Используя библиотеку lubridate:

require(lubridate)
d <- as.Date('2018-09-01')
last_day <- d
day(last_day) <- days_in_month(last_day)

Для базового решения R мы можем определить вспомогательный метод для добавления месяцев.Затем можно вычислить последний день данного месяца, добавив один месяц к первому месяцу и вычтя один день:

add.months <- function(date, n) seq(date, by=paste (n, "months"), length=2 [2]
d <- as.Date('2018-09-01')         # first of the month
last_day <- add.months(d, 1) - 1   # last of the month

Кредит на вспомогательную функцию add.months присваивается этот ТАК вопрос .

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