25

I would like to calculate sums for certain columns and then apply this summation for every row. Unfortunately, I can only get to the first step. How do I now make it happen for each row? I know that R doesn't need loops; what are good approaches?

My matrix (zscore) looks like this:

   a    b    c    t   y
1  3    4    7    7   4

2  4    56   6    6   4

3  3    3    2    1   7

4  3    88   9    9   9

Now I would want to calculate the row sum for each row, based on some of the columns. For one row it could look like this:

f1 <- sum(zscore[1,1:2], zscore[1,3], zscore[1,5])

How do I do that now for each row?

user1807857
  • 409
  • 1
  • 5
  • 12

3 Answers3

55

You could do something like this:

summed <- rowSums(zscore[, c(1, 2, 3, 5)])
alestanis
  • 21,519
  • 4
  • 48
  • 67
3

The summation of all individual rows can also be done using the row-wise operations of dplyr (with col1, col2, col3 defining three selected columns for which the row-wise sum is calculated):

library(tidyverse)

df <- df %>% 
    rowwise() %>% 
    mutate(rowsum = sum(c(col1, col2,col3)))
mgrund
  • 1,415
  • 8
  • 10
0

If you don't have NA you can apply this

suma.zscore = (zscore$a + zscore$c + zscore$t + zscore$y)
Edwin Torres
  • 117
  • 2
  • 6
  • 1
    depending on the dataframe or matrix, as.numeric maybe necessary to get the addition to work such as: suma.zscore = (as.numeric(zscore$a) + as.numeric(zscore$c) ... etc) – Phil_T Sep 02 '17 at 16:21