如何在R中的函数中使用group_by [英] how to use group_by in a function in R
本文介绍了如何在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屋!
查看全文