Dear All,

 For a vector, I use this

  xu<-1:20
  t<-rep((1:4),each=5)
  tapply(xu,t,mean)
  1  2  3  4
  3  8 13 18

 and for a matrix the only way I may guess is:
 > xu
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
 [1,]    1    4    3    2    1    4    3    2
 [2,]    2    1    4    3    2    1    4    3
 [3,]    3    2    1    4    3    2    1    4
 [4,]    1    4    3    2    1    4    3    2
 [5,]    2    1    4    3    2    1    4    3
 [6,]    3    2    1    4    3    2    1    4
> t
 [1] 1 1 1 2 2 2
> y
        [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
 [1,]    0    0    0    0    0    0    0    0
 [2,]    0    0    0    0    0    0    0    0

 > for (i in 1:dim(xu)[2]) y[,i]<-tapply(xu[,i],t,mean)
 > y
        [,1]        [,2]         [,3]  [,4] [,5]         [,6]          [,7]
[,8]
 [1,]    2 2.333333 2.666667    3    2 2.333333 2.666667    3
 [2,]    2 2.333333 2.666667    3    2 2.333333 2.666667    3

I do not like the need to create a matrix (y) for the result.
Is there a better way?

Thanks,
Andrei.

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to