【问题标题】:R calculate month end [duplicate]R计算月末[重复]
【发布时间】:2017-05-04 02:44:59
【问题描述】:

我有一个关于日期结束的问题,我在下面解释。
这是我的示例数据:

DATE
2015-01-01
2015-02-05
2015-09-29
2016-02-07
2016-07-24
2016-12-16

我知道如果我想要那个月的总天数,代码是:

days_in_month(DATE)

但是,我想要的是如下:

DATE            DATE_Month_End
2015-01-01      2015-01-31
2015-02-05      2015-02-28
2015-09-29      2015-09-30
2016-02-07      2016-02-29
2016-07-24      2016-07-31
2016-12-16      2016-12-31

有什么建议吗?

【问题讨论】:

    标签: r date


    【解决方案1】:

    你可以这样做:

    library(lubridate)
    
    DATE$DATE_Month_End <- DATE$DATE
    day(DATE$DATE_Month_End) <- days_in_month(DATE$DATE)
    

    因为day() &lt;- 允许您更改日期,同时保留年份和月份。

    【讨论】:

    • 你的回答太棒了。这能写一行吗?
    • 这是我遇到的一个问题的优雅解决方案。谢谢!
    【解决方案2】:

    这样的?

    library(lubridate)
    data$DATE <- ymd(data$DATE)
    data$DATE_Month_End <- paste(format(data$DATE, format="%y-%m"),"-", days_in_month(data$DATE), sep="") 
    
    
      DATE           DATE_Month_End
    1 2015-01-01       15-01-31
    2 2015-02-05       15-02-28
    3 2015-09-29       15-09-30
    4 2016-02-07       16-02-29
    5 2016-07-24       16-07-31
    6 2016-12-16       16-12-31
    

    【讨论】:

    • 没有。我知道这个。但我想如果DATE2015-01-01DATE_Month_End2015-01-31
    • 我刚刚在上面编辑过
    • 哦,你的回答很好。但是是否有另一种方法可以获得相同的结果而不使用paste
    • 你也可以使用 ceiling_date(data$DATE, unit = "month") - days(1)
    猜你喜欢
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2014-05-08
    相关资源
    最近更新 更多