2017-05-04 89 views
0

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

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 

有什么建议吗?

回答

3

你可以这样做:

library(lubridate) 

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

因为day() <-可以让你改变的日子,同时保持了年和月。

+0

你的回答很棒。这可以写在一行吗? –

1

这样的事情?

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 
+0

NO。我知道这个。但我想如果'DATE'是'2015-01-01','DATE_Month_End'是'2015-01-31' –

+0

我刚才编辑 –

+0

哦,你的回答很好。但有没有另一种方法来获得相同的结果,而不是使用'粘贴'? –