代码之家  ›  专栏  ›  技术社区  ›  Wlademir Ribeiro Prates

如何在dplyr中调用多个变量来分组

  •  4
  • Wlademir Ribeiro Prates  · 技术社区  · 6 年前

    我正在尝试使用group\u by和几个列的摘要,这些列将在一个闪亮的应用程序中进行交互。因此,如果我按函数指定group\u中的列名,它就会起作用,但如果我为列名创建一个向量,那么它就不再起作用了。以下是Iris数据集的示例:

    # Working
    iris %>% group_by(Sepal.Length, Species) %>% 
      summarise(
        `Sum.Sepal.Width` = sum(Sepal.Width)
      )
    
    # Not working
    columns <- c("Sepal.Length", "Species")
    iris %>% group_by(columns) %>% 
      summarise(
        `Sum.Sepal.Width` = sum(Sepal.Width)
      )
    

    谢谢 瓦莱德米尔。

    3 回复  |  直到 6 年前
        1
  •  4
  •   Edgar    6 年前

    如中所述 this question ,应使用 group_by_at() :

    columns <- c("Sepal.Length", "Species")
    iris %>% group_by_at(columns) %>% 
      summarise(
        "Sum.Sepal.Width" = sum(Sepal.Width)
    )
    
        2
  •  3
  •   Chaitu    6 年前

    Error in grouped_df_impl(data, unname(vars), drop) :

      columns <- c("Sepal.Length", "Species")
    
      iris %>% group_by(.dots = columns) %>% 
        summarise(
          `Sum.Sepal.Width` = sum(Sepal.Width)
        )
    
        3
  •  3
  •   Aurèle    6 年前

    另一种方法是使用 rlang::syms :

    iris %>% 
      group_by(!!! rlang::syms(columns)) %>% 
      summarise(
        `Sum.Sepal.Width` = sum(Sepal.Width)
      )