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

bos*_*hek 0 r dplyr

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

library(dplyr)

iris %>%
  group_by(Species) %>%
  mutate_all(funs(min, max))
Run Code Online (Sandbox Code Playgroud)

但我不知道如何选择一列。我可以想象这样的事情,尽管这显然不会运行:

iris %>%
  group_by(Species) %>%
  mutate(Sepal.Length, funs(min, max))
Run Code Online (Sandbox Code Playgroud)

我可以使用do()一个像这样的自定义函数来完成这个任务:

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


iris %>%
  group_by(Species) %>%
  do(summary_func(.$Sepal.Length))
Run Code Online (Sandbox Code Playgroud)

然而,这并没有真正做我想做的事情,因为它没有添加到现有的 tibble a la 中mutate

有任何想法吗?

CPa*_*Pak 6

mutate_at

iris %>%
   group_by(Species) %>%
   mutate_at("Sepal.Length", funs(min, max))
Run Code Online (Sandbox Code Playgroud)

它需要一个character所以看报价

  • 您也可以使用 `mutate_at(vars(Sepal.Length), funs(min, max))` 而不是使用引号。 (3认同)