[R] Calculate monthly means

Daniel Kaschek daniel.kaschek at physik.uni-freiburg.de
Tue Mar 15 17:26:20 CET 2011


On Tue, 2011-03-15 at 07:24 -0700, Carl Nim wrote: 
> I am trying to calculate monthly means by year of phosphates and nitrates from a multi year data set. Can anybody help me out with the most effective way to do this?
> 
> My data looks like this:
> 
> Collection_Date Test.Name Value
> 2000-01-24 17:00:00 Phosphate 0.108
> 2000-01-24 17:00:00 Nitrate 0.037
> 2001-11-12 08:45:00 Phosphate 0.45
> ...
> 
> 
> Thanks and sorry for the blatantly "newbie" question.

Let's say you have a data.frame, mydata, with the above data. Then you
could write a function

mymean <- function(year, month, substance) {
  mysub <- subset(mydata,
format(as.PPSIXlt.date(Collection_Date), "%Y") == year,
format(as.POSIXlt.date(Collection_Date), "%b") == month,
Test.Name == substance)
  return(mean(mysub$value))
}

Then you need to apply this function to every combination of year, month
and substance in your data.frame. You can do this by

M <- expand.grid(2000:2010, month.abb, c("Phosphate", "Nitrate"))
meanValues <- apply(M, 1, mymean(myRowEntry[1], myRowEntry[2],
myRowEntry[3])

In the end you can put the result together with M, i.e.

M <- cbind(M, meanValues)




> 
> 
> 
>       
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.

-- 
Daniel Kaschek
Physikalisches Institut, Freiburg
Hermann-Herder-Str. 3
79104 Freiburg

Office:  Westbau, 02020
Phone:   +49-761-203-8531
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110315/ab04e7ce/attachment.bin>


More information about the R-help mailing list