参数化group_by%>%摘要

时间:2018-12-13 19:14:03

标签: r

有一个像这样的data.frame:

df <- data.frame("Config" = c("C1","C1","C2","C2"), "SN1" = 1:4, "SN2" = 5:8)

我正在尝试使group_by %>% summarise更通用。这是一个不起作用的示例:

variable <- "SN1"

df %>%
  group_by(
  Config
  ) %>%
  summarise(
    paste0(variable, ".median")=median(UQ(as.symbol(variable)))
  ) %>%
  as.data.frame() ->
  df_summary

由于paste0(variable, ".median")部分而无法使用。

相关的问题解答Pass arguments to dplyr functions帮助我参数化了median(UQ(as.symbol(variable)))部分,但没有提及左侧部分。

是否可以解决上述问题?

1 个答案:

答案 0 :(得分:3)

您可以使用enquo!!

library(tidyverse)

mysumm <- function(variable){
  var <- enquo(variable)
  df %>%
    group_by(
    Config
    ) %>%
    summarise(!!paste0(variable, ".median") := median(!!var))
}

mysumm('SN1')
# # A tibble: 2 x 2
#   Config SN1.median
#   <fct>  <chr>     
# 1 C1     SN1       
# 2 C2     SN1