[R] Averaging over columns

Duncan Murdoch murdoch at stats.uwo.ca
Mon Mar 6 13:28:07 CET 2006


On 3/6/2006 7:13 AM, michael watson (IAH-C) wrote:
> Hi
> 
> I've been reading the help for by and aggregate but can't get my head
> round how to do this.  
> 
> I have a data frame - the first three columns are replicate
> measurements, then the next 3 are replicates etc up to 36 (so 12
> variables with 3 replicate measurements each).  I want to compute the
> mean for each of the 12 variables, so that, for each row, I have 12
> means.
> 
> A grouping variable across columns can easily be created by
> rep(1:12,each=3), but I can't figure out which function to use to get R
> to calculate the means I want.

I'd think the easiest thing is to reshape the dataset so you have the 
variables entirely in their own columns, then just apply mean to the 
columns.  (Add a new column for replicate number so you don't lose that 
information.)

If you want to avoid that, then code like this will do your calculation, 
but it looks ugly:

means <- numeric(12)
for (i in 0:11) {
   means[i] <- mean(mydata[,3*i + 1:3])
}

You could also put something together using tapply and your grouping 
variable, but I think the two solutions above will be easiest to read.

Duncan Murdoch




More information about the R-help mailing list