我试图弄清楚如何使用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
。
有什么想法吗?
答案 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))