[R] Define a variable on a non-standard year interval (Water Years)
MacQueen, Don
macqueen1 at llnl.gov
Mon Jun 11 21:56:18 CEST 2012
Here's one way.
(not including the conversion to factor)
wdf <- data.frame(Date=seq(as.Date("2000/10/1"), as.Date("2003/9/30"),
"days"))
wdf$wyr <- as.numeric(format(wdf$Date,'%Y'))
is.nxt <- as.numeric(format(wdf$Date,'%m')) %in% 1:9
wdf$wyr[ is.nxt ] <- wdf$wyr[is.nxt]-1
## and you can do some rudimentary checking with:
table(format(wdf$Date,'%Y'), wdf$wyr)
Note that df is the name of an R-supplied function and therefore not a
good choice for one's own use.
(By the way, thank you for providing easy to recreate example data.
As a minor point, this:
wdf <- data.frame(Date=seq(as.Date("2000/10/1"),
as.Date("2003/9/30"),
"3 weeks"))
would be just a little easier to work with for testing)
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
On 6/11/12 10:22 AM, "Sam Albers" <tonightsthenight at gmail.com> wrote:
>Hello,
>
>I am trying to define a different interval for a "year". In hydrology,
>a "water year" is defined as the period between October 1st and
>September 30 of the following year. I was wondering how I might do
>this in R. Say I have a data.frame like the following and I want to
>extract a variable with the water year specs as defined above:
>
>df<-data.frame(Date=seq(as.Date("2000/10/1"), as.Date("2003/9/30"),
>"days"))
>
>## Extract the normal year
>df$year <- factor(format(as.Date(df$Date), "%Y"))
>
>So the question is how might I define a variable that extends from
>October 1st to September 30th rather than the normal January 1st to
>December 31st?
>
>Thanks in advance!
>
>Sam
>
>______________________________________________
>R-help at r-project.org 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