如何在R中的函数中使用group_by [英] how to use group_by in a function in R

查看:132
本文介绍了如何在R中的函数中使用group_by的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to use group_by in a function, the following is my code, 1, 2 work well, so I create a function - 3, while it doesn't work in 4. I don't known how to address this problem, so ask for a help.

#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)",

推荐答案

您可以这样做:

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

有关更多参考,请参见链接

For further reference check the link

这篇关于如何在R中的函数中使用group_by的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆