У меня есть фрейм данных, который выглядит следующим образом.
df <- data.frame(Year = c(2016,2017,2016,2017),
Month = c(1,2,1,2),
valueA = c(40,29,25,22),
valueB = c(40,36,31,30))
Я sh для вычисления разницы путем группировки столбцов по году и месяцу.
abs(aggregate(.~ Year + Month, df, diff))
# Year Month valueA valueB
#1 2016 1 15 9
#2 2017 2 7 6
То же самое, если я пытаюсь использовать пакет dplyr
, он не работает.
library(dplyr)
df %>% group_by(Year, Month) %>% summarise_all(abs(diff))
#Error in abs(diff) : non-numeric argument to mathematical function
С другой стороны, если я удалю функцию abs
, она сработает.
df %>% group_by(Year, Month) %>% summarise_all((diff))
#Year Month valueA valueB
# <dbl> <dbl> <dbl> <dbl>
#1 2016 1 -15 -9
#2 2017 2 -7 -6
Любая идея относительно того, почему возникает ошибка и как можно достичь желаемого результата из пакета dplyr
?