rowsum package:base R Documentation _G_i_v_e _c_o_l_u_m_n _s_u_m_s _o_f _a _m_a_t_r_i_x _o_r _d_a_t_a _f_r_a_m_e, _b_a_s_e_d _o_n _a _g_r_o_u_p_i_n_g _v_a_r_i_a_b_l_e _D_e_s_c_r_i_p_t_i_o_n: Compute column sums across rows of a matrix-like object for each level of a grouping variable. 'rowsum' is generic, with a method for data frames and a default method for vectors and matrices. _U_s_a_g_e: rowsum(x, group, reorder = TRUE, ...) ## S3 method for class 'data.frame': rowsum(x, group, reorder = TRUE, na.rm = FALSE, ...) ## Default S3 method: rowsum(x, group, reorder = TRUE, na.rm = FALSE, ...) _A_r_g_u_m_e_n_t_s: x: a matrix, data frame or vector of numeric data. Missing values are allowed. A numeric vector will be treated as a column vector. group: a vector or factor 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 groups were encountered. na.rm: logical ('TRUE' or 'FALSE'). Should 'NA' values be discarded? ...: other arguments to be passed to or from methods _D_e_t_a_i_l_s: 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 sum over all the rows of a matrix (ie, a single 'group') use 'colSums', which should be even faster. _V_a_l_u_e: A matrix or data frame containing the sums. There will be one row per unique value of 'group'. _S_e_e _A_l_s_o: 'tapply', 'aggregate', 'rowSums' _E_x_a_m_p_l_e_s: require(stats) x <- matrix(runif(100), ncol=5) group <- sample(1:8, 20, TRUE) (xsum <- rowsum(x, group)) ## Slower versions tapply(x, list(group[row(x)], col(x)), sum) t(sapply(split(as.data.frame(x), group), colSums)) aggregate(x, list(group), sum)[-1]