dplyr :: mutate一列上的多个函数

时间:2017-07-10 21:54:27

标签: r dplyr

我试图弄清楚如何使用dplyr通过几个函数改变单个数据列。我可以做每一栏:

library(dplyr)

iris %>%
  group_by(Species) %>%
  mutate_all(funs(min, max))

但我不知道如何选择一列。我可以想象这样的东西,虽然这显然不会运行:

iris %>%
  group_by(Species) %>%
  mutate(Sepal.Length, funs(min, max))

我可以使用do()和这样的自定义函数完成此任务:

summary_func = function(x){
  tibble(max_out = max(x),
         min_out = min(x)
  )
}


iris %>%
  group_by(Species) %>%
  do(summary_func(.$Sepal.Length))

然而,这并不能真正做我想做的事情,因为它不会添加到存在的元素la mutate

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

使用mutate_at

iris %>%
   group_by(Species) %>%
   mutate_at("Sepal.Length", funs(min, max))

需要character所以请注意引号

答案 1 :(得分:-1)

使用mutate

iris %>%
  group_by(Species) %>%
  mutate(min = min(Sepal.Length),
         max = max(Sepal.Length))