Суммирование значений строк с использованием mutate_at - PullRequest
1 голос
/ 12 апреля 2020

Я пытаюсь суммировать значения строк по заданным c столбцам, используя функции mutate_at и sum. Набор данных приведен ниже:

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

Я использую следующий код, но вместо суммирования всех значений столбца я получаю нули.

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

Вывод, который я хочу получить:

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

Но вместо вышесказанного все столбцы даты идут 0. Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Для завершения другой вариант:

tb %>% group_by(`Country/Region`) %>% mutate_all(sum) %>% distinct(`Country/Region`,.keep_all = TRUE)
1 голос
/ 13 апреля 2020

Можете ли вы попробовать summarise_all вместо mutate_at(vars(-group_cols()), ~sum)?

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

PS: Я полагаю, у вас есть несколько опечаток, например, tb[1,1] должно вернуть 1, а не 2. Кроме того, пример кода не полностью соответствует данным (в них нет Cruise Ship или Province/State. Тем не менее, игнорируя их, я обнаружил, что это работает для генерации ожидаемого вывода.

...