【问题标题】:How to pass multiple column names as input to group_by in dplyr [duplicate]如何将多个列名作为输入传递给dplyr中的group_by [重复]
【发布时间】:2017-03-05 18:42:33
【问题描述】:

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

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()

我将不胜感激。谢谢。

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你几乎搞定了,你只需要使用.dots 参数来传递你的分组变量。

    group <- c("origin","carrier") 
    
    flights %>% 
      group_by_(.dots = group) %>% 
      tally()
    

    【讨论】:

    • 太棒了。非常感谢。你能帮我理解 .dots 参数的作用吗?
    • 您使用.dots 参数与dplyr 进行编程,它使您能够以编程方式将您想做的事情传递给dplyr SE 函数。您应该阅读 NSE 上的 dplyr 小插图以获取更多信息。
    • 感谢您的帮助!
    • 更新:group_by().dots 参数自 dplyr 1.0.0 起已弃用。相反,您可以使用大银行运营商!!!,如group_by(!!!groups)
    猜你喜欢
    • 2018-05-15
    • 2019-03-20
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2015-11-21
    • 2015-03-29
    • 2017-09-12
    • 2018-04-05
    相关资源
    最近更新 更多