rowsum {base} | R Documentation |
Give row sums of a matrix or data frame, based on a grouping variable
Description
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.
Usage
rowsum(x, group, reorder = TRUE,...)
Arguments
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
|
reorder |
if |
... |
other arguments for future methods |
Details
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.
Value
a matrix or data frame containing the sums. There will be one row per
unique value of group
.
See Also
tapply
, aggregate
,rowSums
Examples
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)