sum cells of certain columns for each row
Asked Answered
R

3

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?

Rachitis answered 20/11, 2012 at 21:32 Comment(0)
L
55

You could do something like this:

summed <- rowSums(zscore[, c(1, 2, 3, 5)])
Lydie answered 20/11, 2012 at 21:37 Comment(1)
AWESOME, I did it with a loop in the meantime, but your solution is WAY cleaner!Rachitis
L
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)))
Lexis answered 26/10, 2020 at 8:23 Comment(0)
O
0

If you don't have NA you can apply this

suma.zscore = (zscore$a + zscore$c + zscore$t + zscore$y)
Osrock answered 21/9, 2016 at 16:13 Comment(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)Qatar

© 2022 - 2024 — McMap. All rights reserved.