[R] Getting the last day of the month.

Eric rmailbox at justemail.net
Fri May 11 07:55:03 CEST 2007


For 2007:

seq(as.Date('2007-02-01'), length = 12, by = "mon") - 1

Current month:
seq( as.Date( format( Sys.Date(), "%Y-%m-01")), length = 2, by = 
"mon")[2] - 1

Eric



Patnaik, Tirthankar wrote:
> Hi,
> 	Given a date, how do I get the last date of that month? I have
> data in the form YYYYMM, that I've read as a date using
>
>   
>> x$Date <-
>>     
> as.Date(ISOdate(substr(x$YearEnd,1,4),substr(x$YearEnd,5,6),1))
>
> But this gives the first day of the month. To get the last day of the
> month, I tried 
>
>   
>> as.Date(as.yearmon(x$Date,frac=0))
>>     
>
> But I don't get the last day of the month here. (Tried frac=1 too.)
>
> I then add a month to the date, substract one day from the resultant
> date. But this wouldn't work for December.
>
>   
>> x$YearEnd
>>     
>  [1] 200203 200303 200403 200503 200603 200603 200312 200503 200603
> 200203 200303
> [12] 200403 200503 200512 200612 200203 200303 200403 200503 200603
>   
>> x$Date <- as.Date(ISOdate(substr(x$YearEnd,1,4),
>>     
> + as.integer(substr(x$YearEnd,5,6))+1,
> + 1))-1
>   
>> x$Date
>>     
>  [1] "2002-03-31" "2003-03-31" "2004-03-31" "2005-03-31" "2006-03-31"
> "2006-03-31"
>  [7] NA           "2005-03-31" "2006-03-31" "2002-03-31" "2003-03-31"
> "2004-03-31"
> [13] "2005-03-31" NA           NA           "2002-03-31" "2003-03-31"
> "2004-03-31"
> [19] "2005-03-31" "2006-03-31"
>
> So I add a year, and set the month to 1 in a quick function.
>
>   
>> GetEOM <- function(yyyymm=200406){
>>     
> 	year <- as.integer(substr(yyyymm,1,4))
> 	month <- as.integer(substr(yyyymm,5,6))
> 	if (month==12){
> 		date <- as.Date(ISOdate(year+1,1,1))-1
> 	}else{
> 		date <- as.Date(ISOdate(year,month+1,1))-1
> 	}
> 	print(date)
> }
>
> x$Date <- as.vector(sapply(x$YearEnd,GetEOM))
>
> str(x$Date)
>
>
> Is there a simpler way to do this please?
>
>
> TIA and best,
> -Tir
>
> Tirthankar Patnaik
> India Strategy
> Citigroup Investment Research
> +91-22-6631 9887
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list