簡體   English   中英

如何在R中的函數中使用group_by

[英]how to use group_by in a function in R

我想在一個函數中使用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)",

你可以做:

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

有關更多參考,請檢查鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM