【发布时间】:2020-08-01 07:28:23
【问题描述】:
我有一个看起来像这样的数据框。
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))
我希望通过按年和月对列进行分组来计算差异。
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 包中获得所需的输出吗?
【问题讨论】: