Search code examples
rsum

Add column that is the sum of other columns


Input data:

Director= c("Director A", "Director B", "Director C")
Salary = c(40000, 35000, 50000)
Listed boards = c(1, 0, 3)
Unlisted boards = c(4, 2, 6)
Other boards = c(2, 3, 3)
Number of qualifications = c(1, 2, 1)

df_directors = data.frame(Director, Salary, Listed boards, Unlisted boards, Other boards, Number of qualifications) 

Now I want to create an extra column that sums and replaces the three columns with regards to boards. So my output data should look like this:

Director         Salary         Boards         Number of qualifications
Director A       40000          7              1
Director B       35000          5              2
Director C       50000          12             1

This code somehow doesn't work.

df_directors <- df_directors %>%
  rowwise() %>%
  mutate(rBoards = sum(c_across(all_of(Listed Boards:Other Boards))))

Solution

  • We could use rowSums with select:

    library(dplyr)
    
    df_directors %>% 
      transmute(Director, Salary, Boards = rowSums(select(., contains("boards"))),Number_of_qualifications)
    

    First solution:

    library(dplyr)
    
    df_directors %>% 
      mutate(Boards = rowSums(select(., contains("boards")))) %>% 
      select(1,2,Boards,6)
    
        Director Salary Boards Number_of_qualifications
    1 Director A  40000      7                        1
    2 Director B  35000      5                        2
    3 Director C  50000     12                        1