gpt4 book ai didi

r - 可以有条件地计算 dplyr::summarize() 的不同部分吗?

转载 作者:行者123 更新时间:2023-12-04 23:16:26 26 4
gpt4 key购买 nike

是否可以在 dplyr::summarize() 的不同部分运行条件语句?

想象一下,我正在使用 iris数据并输出摘要,我只想在请求时包含 Sepal.Length 的平均值。所以我可以做这样的事情:

data(iris)
include_length = T
if (include_length) {
iris %>%
group_by(Species) %>%
summarize(mean_sepal_width = mean(Sepal.Width), mean_sepal_length = mean(Sepal.Length))
} else {
iris %>%
group_by(Species) %>%
summarize(mean_sepal_width = mean(Sepal.Width))

}

但是有没有办法在管道中实现条件,这样它就不需要重复了?

最佳答案

您可以使用 .dots dplyr 的 SE 函数的参数以编程方式进行评估,例如

library(dplyr)

take_means <- function(include_length){
iris %>%
group_by(Species) %>%
summarize_(mean_sepal_width = ~mean(Sepal.Width),
.dots = if(include_length){
list(mean_sepal_length = ~mean(Sepal.Length))
})
}

take_means(TRUE)
#> # A tibble: 3 × 3
#> Species mean_sepal_width mean_sepal_length
#> <fctr> <dbl> <dbl>
#> 1 setosa 3.428 5.006
#> 2 versicolor 2.770 5.936
#> 3 virginica 2.974 6.588

take_means(FALSE)
#> # A tibble: 3 × 2
#> Species mean_sepal_width
#> <fctr> <dbl>
#> 1 setosa 3.428
#> 2 versicolor 2.770
#> 3 virginica 2.974

关于r - 可以有条件地计算 dplyr::summarize() 的不同部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40367719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com