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
`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 |

### 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)

[Package

*base* version 2.2.1

Index]