11.6 拓展部分
在我之前工作中遇到需要分组计算时,我想要编写一个函数实现某些功能,但是分组的group_by()字段不一样时,导致代码没办法复用。
参考资料:https://dplyr.tidyverse.org/articles/programming.html
#library(tidyverse)
= function(data, group_col) {
mean_mpg %>%
data group_by(group_col) %>%
summarize(mean_mpg = mean(mpg))
}%>% mean_mpg(cyl)
mtcars %>% mean_mpg(gear) mtcars
当编写如下函数时,代码将成功运行
#自定义函数
<- function(data, group_var,mean_var, sd_var) {
my_summarise3 %>%
data group_by({{ group_var }}) %>%
summarise(mean = mean({{ mean_var }}), sd = mean({{ sd_var }}))
}
<- my_summarise3(data = mtcars,group_var = cyl,mean_var = carb,sd_var = gear)
res1 my_summarise3(data = mtcars,group_var = am,mean_var = carb,sd_var = gear)
#> # A tibble: 2 x 3
#> am mean sd
#> <int> <dbl> <dbl>
#> 1 0 2.74 3.21
#> 2 1 2.92 4.38
#正常写法
<- mtcars %>%
res2 group_by(cyl) %>%
summarise(mean=mean(carb),sd=mean(gear))
identical(res1,res2)
#> [1] TRUE
#res1 和res2 结果完全一致
以上my_summarise3()函数可以按照需求任意指定聚合汇总字段。