在dplyr 1.0中使用tidyeval一次总结多个函数

在dplyr 1.0中使用tidyeval一次总结多个函数,r,dplyr,tidyverse,rlang,tidyeval,R,Dplyr,Tidyverse,Rlang,Tidyeval,假设我们有一个数据帧 库(tidyverse) 图书馆(rlang) df% 分组依据(id)%>% 总结( n=n(), mu_A=平均值(等级=“A”), mu_B=平均值(等级=“B”), mu_C=平均值(等级=“C”) ) 我正在处理一个存在多个条件(本例中有多个等级)的情况,并希望使我的代码更加健壮。我们如何在dplyr 1.0中使用tidyevaluation来简化这个过程 我说的是通过一次通过所有等级来生成多个列名,而不破坏dplyr中的管道流,比如 #如何同时获得A、B、C的

假设我们有一个数据帧

库(tidyverse)
图书馆(rlang)
df%
分组依据(id)%>%
总结(
n=n(),
mu_A=平均值(等级=“A”),
mu_B=平均值(等级=“B”),
mu_C=平均值(等级=“C”)
)
我正在处理一个存在多个条件(本例中有多个等级)的情况,并希望使我的代码更加健壮。我们如何在dplyr 1.0中使用tidyevaluation来简化这个过程

我说的是通过一次通过所有等级来生成多个列名,而不破坏dplyr中的管道流,比如

#如何同时获得A、B、C的平均值?
mu{grade}:=平均值(grade=={grade})

事实上,我在两年前写的一篇文章中找到了我自己问题的答案

我将在下面发布代码,希望能帮助任何遇到同样问题的人

make_expr%
map(~parse_expr(str_glue(“mean(grade='{.x}')))))
}
#生成多个表达式
等级%set_名称(粘贴0(“mu_”,等级))
#我们可以通过添加命名元素来“补充”额外的内容
exprs%group_by(id)%%>%summary(!!!exprs)