1
votes

I am trying to sum row values by specific columns using mutate_at and sum function. The dataset is given below:

Country/Region   1/22/20   1/23/20   1/24/20  1/25/20  1/26/20  1/27/20 
Chili            0         0         0        3        1        2
Chili            1         0         1        4        2        1
China            23        26        123      12       56       70
China            45        25        56       23       16       18

I am using following code but instead of summing all the column values, I am getting zeroes.

tb <- confirmed_raw %>% group_by(`Country/Region`) %>%
      filter(`Country/Region` != "Cruise Ship") %>%
      select(-`Province/State`, -Lat, -Long) %>%
      mutate_at(vars(-group_cols()), ~sum) 

The output which I want is:

Country/Region   1/22/20   1/23/20   1/24/20  1/25/20  1/26/20  1/27/20 
Chili            2         0         1        7        3        3
China            68        51        179      35       72       88

But instead of above, all the date columns are coming 0. How can I solve this?

2

2 Answers

1
votes

Can you try summarise_all instead of mutate_at(vars(-group_cols()), ~sum)?

tb %>% group_by(`Country.Region`) %>% summarise_all(funs(sum))

PS: I guess you have few typos here such as tb[1,1] should return 1, not 2. Also, the example code does not correspond to the data entirely (ther is no Cruise Ship or Province/State in it. Still, ignoring those, I found this works to generate the expected output.

1
votes

To complete, another option :

tb %>% group_by(`Country/Region`) %>% mutate_all(sum) %>% distinct(`Country/Region`,.keep_all = TRUE)