【问题标题】:How to call several variables to group_by in dplyr如何在 dplyr 中调用几个变量到 group_by
【发布时间】:2018-10-21 23:41:06
【问题描述】:

我正在尝试使用 group_by 并使用几列进行汇总,这将在闪亮的应用程序中进行交互。因此,如果我在 group_by 函数中指定列名,它可以工作,但是如果我为列名创建一个向量,那么它就不再工作了。以下是 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)
  )

谢谢。 弗拉德米尔。

【问题讨论】:

  • iris %>% group_by(.dots = columns)
  • 谢谢@Chai!它正在工作!

标签: r shiny dplyr


【解决方案1】:

正如this question 中提到的,它应该通过使用group_by_at() 来工作:

columns <- c("Sepal.Length", "Species")
iris %>% group_by_at(columns) %>% 
  summarise(
    "Sum.Sepal.Width" = sum(Sepal.Width)
)

【讨论】:

    【解决方案2】:

    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】:

      还有一种方法是使用rlang::syms:

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

      【讨论】:

      猜你喜欢
      • 2019-12-20
      • 2016-12-03
      • 1970-01-01
      • 2019-02-25
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多