[R] given a mid-month date, get the month-end date
Whit Armstrong
whit at twinfieldscapital.com
Mon Dec 19 18:50:41 CET 2005
Or add a month, then subtract a day:
Ndays <- function(posix.ct.dates,days) {
# one day = 60*60*24 = 86400 seconds
ans <- as.POSIXct(posix.ct.dates) + 86400*days
# we only have a problem if the date went from
# DST to ST or from ST to DST
ans + (as.POSIXlt(posix.ct.dates)$isdst -
as.POSIXlt(ans)$isdst)*3600
}
calendar.eom <- function(x) {
x.lt <- as.POSIXlt(x)
mon <- x.lt $mon + 2
year <- x.lt$year
# if month was December add a year
year <- year + as.integer(mon==13)
mon[mon==13] <- 1
Ndays(ISOdate(1900+year,mon,1,hour=0,tz=attr(x,"tzone")),-1)
}
x <- seq(as.POSIXct("2001-01-10"),as.POSIXct("2005-12-10"),by="months")
data.frame(before=x,after=calendar.eom(x))
-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Gabor
Grothendieck
Sent: Monday, December 19, 2005 11:59 AM
To: t c
Cc: r-help
Subject: Re: [R] given a mid-month date, get the month-end date
The zoo package has a yearmon class with as methods which can be
used:
library(zoo)
dd <- Sys.Date() # test data
as.Date(as.yearmon(dd), frac = 1)
as.yearmon converts the "Date" class date to a year and month of class
"yearmon" dropping the day and representing it internally in a way
consistent with "ts" class.
as.Date above then converts it back to "Date" class.
Since yearmon dates have no day (they are just a year and a month) the
frac argument is used to indicate what fraction of the month to use as
the day of the month so frac = 0 (the
default) would give the beginning of the month) and frac = 1 gives the
end.
On 12/19/05, t c <quantpm at yahoo.com> wrote:
> I have a vector of dates.
>
> I wish to find the month end date for each.
>
> Any suggestions?
>
> e.g.
>
> For 12/15/05, I want 12/31/05,
>
> For 10/15/1995, I want 10/31/1995, etc
>
>
> __________________________________________________
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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
>
______________________________________________
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
More information about the R-help
mailing list