Re: [R] Getting the last day of the month.

From: <gyadav_at_ccilindia.co.in>
Date: Fri, 11 May 2007 11:03:45 +0530

http://finzi.psych.upenn.edu/R/library/fCalendar/html/3D-TimeDateSpecDates.html

try this also RSiteSearch("last day of the month") to get more pointers

          \\\|||||///
       \\   -    -   //
        (  o   o  )

oOOo-(_)-oOOo--------
|
| Gaurav Yadav
| Assistant Manager, CCIL, Mumbai (India)
| Mob: +919821286118 Email: emailtogauravyadav_at_gmail.com
| Man is made by his belief, as He believes, so He is.
| --- Bhagavad Gita
|_______Oooo________
         oooO(      )
         (      )   )   /
          \   (    (_/
            \_ )




"Patnaik, Tirthankar " <tirthankar.patnaik_at_citi.com> Sent by: r-help-bounces_at_stat.math.ethz.ch 05/10/2007 07:12 PM

To
<r-help_at_stat.math.ethz.ch>
cc

Subject
[R] Getting the last day of the month.

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.

DISCLAIMER AND CONFIDENTIALITY CAUTION:\ \ This message and ...{{dropped}}

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. Received on Fri 11 May 2007 - 05:36:46 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 11 May 2007 - 06:31:53 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.