rdplyrsumrowjanitor

add a total row in a dplyr code but just under a specifc colum


I have this data set

structure(list(col2 = c(1, 1, 2, 3, 1, 2, 2, 3, 1, 2), col1 = c("R", 
"R", "R", "R", "R", "L", "R", "R", "R", "R")), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -10L), groups = structure(list(
    col1 = c("L", "R", "R", "R"), col2 = c(2, 1, 2, 3), .rows = structure(list(
        6L, c(1L, 2L, 5L, 9L), c(3L, 7L, 10L), c(4L, 8L)), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -4L), .drop = TRUE))

what I would like to do is just add only a final row under 'n' column (the new created with dplyr) wit column total. I have tried with this code, but I get total for every columns.

library(janitor)
    data %>% 
       group_by(col1, col2) %>% 
  mutate(col1 = recode(col1, 'R (change file name)' = 'R', 
                                             'L (change name e data EEG file)' = 'L')) %>% 
  summarise(n = n()) %>%
      adorn_totals("row")

I would be eager to learn how to fix it or other strategy for this purpose.

Thanks


Solution

  • Here is how we could do it with adorn_totals:

    adorn_totals has a ... argument: Using ... requires specifying values for the other arguments, even if they're empty, thus the ,,,, below to accept the default values for those arguments. See original answer by @Sam Firke Calculating and Appending Column Totals of Select Columns in a Data Frame in R

    library(dplyr)
    library(janitor)
    
    df %>% 
      group_by(col1, col2) %>% 
      mutate(col1 = recode(col1, 'R (change file name)' = 'R', 
                           'L (change name e data EEG file)' = 'L')) %>% 
      summarise(n = n()) %>%
      adorn_totals("row",,,,n) 
    
    
      col1 col2  n
         L    2  1
         R    1  4
         R    2  3
         R    3  2
     Total    - 10