【问题标题】:What is the correct way to calculate Mean across all variables by grouping通过分组计算所有变量均值的正确方法是什么
【发布时间】:2020-07-18 04:37:12
【问题描述】:
A <- data %>% 
      group_by(Agent) %>%
      summarise(across(EP:Yt.ha),mean)

错误信息是

错误:summarise() 输入 ..2 有问题。 x 输入..2 必须是向量,而不是函数。 i 输入..2mean。 i 组 1 中发生错误:代理 =“Hydro”。 运行rlang::last_error() 看看哪里出错了。

我记得 longback 是这样做的,但我相信现在我一定是放错了一些函数或代码。有人可以告诉正确的方法吗? EP 到 Yt.ha 有 13 个变量

【问题讨论】:

    标签: r dplyr summarize


    【解决方案1】:

    试试这样的(你可以按条件添加分组):

    # install if not already
    install.packages("tidyverse", dependencies = T)
    
    # load package
    library(tidyverse)
    
    # load data
    data(iris)
    iris
    
    # find the mean, grouped by species
    iris %>% group_by(Species) %>% summarise(across(Petal.Width:Sepal.Length, ~ mean(.x, na.rm = TRUE)))
    
    # alternate way to find the mean for specific cols (using col index numbers)
    iris %>% group_by(Species) %>% summarise(across(c(1, 3:4), ~ mean(.x, na.rm = TRUE)))
    

    【讨论】:

    • 在上面,我使用了 iris 数据集中的第一、第三和第四列来找出各自的平均值。
    【解决方案2】:

    使用可重现的代码会更好。

    我会建议一些类似的东西:

    data <- iris
    
    output <- data %>%
              group_by(species) %>%
              summarise(across(petal.width:sepal.length),mean)
    
    // or 
    
    output <- data %>%
              group_by(species) %>%
              summarise(across(where(is.numeric), mean))
    

    【讨论】:

    • 第一个想法行不通。第二个有效,但是我只想要几个我选择的变量
    • 然后使用across(var())
    【解决方案3】:

    以防万一您从未发现。最后的括号设置不正确。以下是它的工作原理:

    A <- data %>% group_by(Agent) %>% summarise(across(EP:Yt.ha, mean))
    

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2011-01-17
      • 2012-01-02
      • 2020-09-27
      相关资源
      最近更新 更多