如何在dplyr中将多个列名作为输入传递给group_by函数

6

我刚开始接触R和dplyr包。我想将一个变量传递给dplyr的group_by函数,这个变量可以改变。

例如,当使用flights数据集时,我可以使用以下代码通过任何列(或多个列)获取行数:

library(nycflights13)
flights %>% group_by(origin) %>% tally()
flights %>% group_by(carrier) %>% tally()
flights %>% group_by(origin,carrier) %>% tally()

但是如果我想将使用的列名作为变量传递给 group_by,那么在使用多个列名时就无法正常工作。

group="carrier"
flights %>% group_by_(group) %>% tally()

group="origin"
flights %>% group_by_(group) %>% tally()

group=c("origin","carrier") #This does not work
flights %>% group_by_(group) %>% tally()

我会感激任何帮助。谢谢。

1个回答

18

你差不多已经搞定了,你只需要使用.dots参数来传递你的分组变量。

group <- c("origin","carrier") 

flights %>% 
  group_by_(.dots = group) %>% 
  tally()

太好了。非常感谢。你能帮我理解一下.dots参数是做什么的吗? - nasia jaffri
在使用dplyr进行编程时,您可以使用.dots参数,它使您能够以编程方式将要执行的操作传递到dplyr SE函数中。您应该阅读有关NSE的dplyr文档以获取更多信息。 - Jake Kaupp
感谢您的帮助! - nasia jaffri
2
更新:自 dplyr 1.0.0 起,group_by().dots 参数已被弃用。相反,您可以使用大型银行操作符 !!!,例如 group_by(!!!groups) - ESELIA
如果使用三个感叹号,你可能需要 'syms'。https://dev59.com/OlIH5IYBdhLWcg3wHJKn - william3031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接