Rev 7782 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{rowsum}\alias{rowsum}\title{Give Row Sums of a Matrix, Based on a Grouping Variable}\description{Compute sums across rows of a matrix for each level of a groupingvariable.}\usage{rowsum(x, group, reorder = TRUE)}\arguments{\item{x}{a matrix or vector of numeric data. Missing values areallowed.}\item{group}{a vector giving the grouping, with one element per row of\code{x}. Missing values are not allowed.}\item{reorder}{if \code{TRUE}, then the result will be in order of\code{sort(unique(group))}, if \code{FALSE}, it will be in the orderthat rows were encountered (and may run faster for large matrices).The default is to reorder the data, so as to agree with\code{tapply} (see example below).}}\value{a matrix containing the sums. There will be one row per unique valueof \code{group}.}\author{Terry Therneau}\seealso{\code{\link{tapply}}}\examples{x <- matrix(runif(100), ncol=5)group <- sample(1:8, 20, T)xsum <- rowsum(x, group)## same result another way, slower, and temp may be much larger than xtemp <- model.matrix(~ a - 1, data.frame(a=as.factor(group)))xsum2<- t(temp) \%*\% x## same as last one, but really slowxsum3 <- tapply(x, list(group[row(x)], col(x)), sum)}\keyword{manip}% Converted by Sd2Rd version 0.2-a3.