【问题标题】:how to use group_by in a function in R如何在 R 中的函数中使用 group_by
【发布时间】:2018-02-26 06:19:07
【问题描述】:

我想在一个函数中使用group_by,下面是我的代码,1、2运行良好,所以我创建了一个函数-3,而它在4中不起作用。我不知道如何解决这个问题问题,所以寻求帮助。

#1 生成变量和数据框

x <- rnorm(100)
y <- rep(c("A", "B"), 50)
df <- data.frame(y, x)

#2按y分组

df %>% 
group_by(y) %>% 
summarise(n = n(),
        mean = mean(x),
        sd = sd(x))

# 3 创建函数

group <- function(df, var1, var2){
df %>% 
group_by(var1) %>% 
summarise(n = n(),
          mean = mean(var2),
          sd = sd(var2))
}

#4 测试函数

group(df = df, var1 = y, var2 = x)

#错误如下:

"Error in grouped_df_impl(data, unname(vars), drop) : 
Column `var1` is unknown
Called from: grouped_df_impl(data, unname(vars), drop)",

【问题讨论】:

    标签: r function


    【解决方案1】:

    你可以这样做:

    library(dplyr)
    group <- function(df, var1, var2){
      var1 <-  enquo(var1); var2 <-  enquo(var2);
      df %>% 
        group_by(!!var1) %>% 
        summarise(n = n(),
                  mean = mean(!!var2),
                  sd = sd(!!var2))
    }
    
    group(df = df, var1 = y, var2 = x)
    ### A tibble: 2 x 4
    ##  y         n    mean    sd
    ##  <fct> <int>   <dbl> <dbl>
    ##1 A        50 -0.133  0.866
    ##2 B        50  0.0770 0.976
    

    更多参考请查看link

    【讨论】:

    • 你太棒了!!这个问题困扰了我很久,感谢您的热心帮助。
    猜你喜欢
    • 2017-12-14
    • 2022-06-19
    • 2017-07-12
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多