【问题标题】:R - how to get the end date of the week and month from a given date? [duplicate]R - 如何从给定日期获取一周和一个月的结束日期? [复制]
【发布时间】:2019-08-22 08:05:37
【问题描述】:

如何在 R 中获取一周、两周(也是开始日期)、月、季度和年的结束日期。

假设我们的日期是“2017 年 7 月 15 日”,下面的代码获取开始日期。

> (a_date <- as.Date("15-07-17", "%d-%m-%y"))
[1] "2017-07-15"
> (beginning_date_week <- as.Date(cut(a_date, "week")))
[1] "2017-07-10"
> (beginning_date_month <- as.Date(cut(a_date, "month")))
[1] "2017-07-01"
> (beginning_date_quarter <- as.Date(cut(a_date, "quarter")))
[1] "2017-07-01"
> (beginning_date_year <- as.Date(cut(a_date, "year")))
[1] "2017-01-01"

将 7 天添加到一周的开始日期可能会让我得到一周的结束日期。

但是,月份加法并不优雅(因为有些月份有 30 天,有些 31 天,有些 28 天(有时是 29 天)),而且只会在季度和年份变得更糟。

【问题讨论】:

    标签: r date datetime lubridate


    【解决方案1】:

    lubridate 包中的ceiling_date 返回下一个周期的第一个日期。减 1 得到当前周期的最后日期。

    library(lubridate)
    
    a_date <- as.Date("15-07-17", "%d-%m-%y")
    
    ceiling_date(a_date, "week", week_start = getOption("lubridate.week.start", 1))-1
    [1] "2017-07-16"
    
    ceiling_date(a_date, "month")-1
    [1] "2017-07-31"
    
    ceiling_date(a_date, "quarter")-1
    [1] "2017-09-30"
    
    ceiling_date(a_date, "year")-1
    [1] "2017-12-31"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      相关资源
      最近更新 更多