【问题标题】:dplyr::mutate multiple functions on one columndplyr::mutate 在一列上的多个函数
【发布时间】:2017-07-10 21:54:26
【问题描述】:

我正在试图弄清楚如何使用 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))

但这并没有真正做我想做的事,因为它没有添加到现有的 tibble mutate

有什么想法吗?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    使用mutate_at

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

    需要character,所以请注意引用

    【讨论】:

    • 你也可以使用mutate_at(vars(Sepal.Length), funs(min, max))而不是引号。
    【解决方案2】:

    使用mutate

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

    【讨论】:

      猜你喜欢
      • 2020-10-08
      • 2022-06-13
      • 1970-01-01
      • 2019-05-04
      • 2023-01-29
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多