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

nas*_*fri 6 r dplyr

我是R和dplyr包的新手.我试图将变量传递给dplyr group_by,我们可以改变/改变它.例如,在使用航班数据集时,我可以使用以下代码获取任何列(或多列)的行数:

library(nycflights13)
flights %>% group_by(origin) %>% tally()
flights %>% group_by(carrier) %>% tally()
flights %>% group_by(origin,carrier) %>% tally()
Run Code Online (Sandbox Code Playgroud)

但是如果我想传递所用列的名称,将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()
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何帮助.谢谢.

Jak*_*upp 15

你几乎得到它,你只需要使用.dots参数传递你的分组变量.

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

flights %>% 
  group_by_(.dots = group) %>% 
  tally()
Run Code Online (Sandbox Code Playgroud)

  • 更新:自 dplyr 1.0.0 起,“group_by()”的“.dots”参数已弃用。相反,您可以使用大银行运算符“!!!”,如“group_by(!!!groups)”。 (3认同)