rowsum {base}R Documentation

Give row sums of a matrix or data frame, based on a grouping variable


Compute sums across rows of a matrix-like object for each level of a grouping variable. rowsum is generic, with methods for matrices and data frames.


rowsum(x, group, reorder = TRUE, ...)


x a matrix, data frame or vector of numeric data. Missing values are allowed.
group a vector giving the grouping, with one element per row of x. Missing values will be treated as another group and a warning will be given
reorder if TRUE, then the result will be in order of sort(unique(group)), if FALSE, it will be in the order that rows were encountered.
... other arguments for future methods


The default is to reorder the rows to agree with tapply as in the example below. Reordering should not add noticeably to the time except when there are very many distinct values of group and x has few columns.

The original function was written by Terry Therneau, but this is a new implementation using hashing that is much faster for large matrices.

To add all the rows of a matrix (ie, a single group) use rowSums, which should be even faster.


a matrix or data frame containing the sums. There will be one row per unique value of group.

See Also

tapply, aggregate, rowSums


x <- matrix(runif(100), ncol=5)
group <- sample(1:8, 20, TRUE)
xsum <- rowsum(x, group)
## Slower versions
xsum2 <- tapply(x, list(group[row(x)], col(x)), sum)
xsum3<- aggregate(x,list(group),sum)

[Package base version 2.1.0 Index]