2017-05-04 1 views
0

Ich habe eine Frage über das Datum Ende, erkläre ich im Folgenden.
Hier mein Beispiel Daten:R berechnen Monat Ende

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

Ich weiß, wenn ich die Gesamtzahl der Tage in diesem Monat wollen, ist der Code:

days_in_month(DATE) 

Doch was ich will, ist wie folgt:

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 

irgendein Vorschlag?

Antwort

3

Sie können dies tun mit:

library(lubridate) 

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

seit day() <- können Sie den Tag zu ändern, während das Jahr und Monat zu halten.

+0

Ihre Antwort ist genial. Kann das in nur einer Zeile geschrieben werden? –

1

So ähnlich?

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

NR. Ich weiß das. Aber ich möchte, wenn 'DATE' ist' 2015-01-01', 'DATE_Month_End' ist' 2015-01-31' –

+0

Ich habe gerade bearbeitet –

+0

Oh, deine Antwort ist gut. Aber gibt es einen anderen Weg, um das gleiche Ergebnis zu erhalten und nicht "Paste" zu verwenden? –

Verwandte Themen