[R] Aggregating on Water Year Rather Than Calendar Year

Don MacQueen macq at llnl.gov
Wed Jun 16 22:57:54 CEST 2004


It's not clear where your problem is.

Did w$w.year come out wrong?
Or did the aggregate() function fail?

For getting the water year, I would do it differently:
  (this is for a U.S. English locale, and minimally tested)

    tmp <- as.POSIXlt(w$d)$year+1900
    w$w.year <- ifelse( format(w$d,'%b') %in% c('Oct','Nov','Dec'), tmp+1, tmp)

Then you can do things like
   table(w$w.year)
   table(w$w.year,w$param.name)
to help find out if w.year came out like it should.

You'll have to provide error messages or something if the problem is 
with using aggregate().

At 11:21 AM -0700 6/16/04, Clint Bowman wrote:
>The US water year extends from 01 October yyyy-1 through 30 September yyyy
>and is referenced by the year starting on the included 01 January yyyy. 
>I'd like to be able to find the annual means for the water year.  To do so
>I've taken the input date-time, which is in the usual format
>
>"1991-10-07 10:35:00"
>
>changed it by:
>
>w$d<-as.POSIXct(w$date.time)
>
>Now I can add an offset of 92 days
>
>w$w.year<-as.POSIXct(w$d+7948800)

Try   w$w.year <- w$d+7948800

>
>and have the years correspond to the "water year."
>
>Now I wish to obtain some means by something like:
>
>waterT<-aggregate(w$value[w$param.name=="Temperature"],
>list(w$w.year[w$param.name=="Temperature"]),mean)
>
>Except that I need to work on the year and being a neophyte in date
>arithmetic I'm not finding a working method.
>
>TIA
>
>Clint
>
>--
>Clint Bowman			INTERNET:	clint at ecy.wa.gov
>Air Quality Modeler		INTERNET:	clint at math.utah.edu
>Department of Ecology		VOICE:		(360) 407-6815
>PO Box 47600			FAX:		(360) 407-7534
>Olympia, WA 98504-7600
>

-Don

-- 
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA




More information about the R-help mailing list