Group_by_at 和 Group_by 中的问题

Issue in Group_by_at & Group_by

下面是数据框和我要执行的代码。 如下图我想group_byx以及colorx 是一个字符串,因此我使用了 group_by_at 函数。

df <- data.frame(
        color = c("Yellow", "Blue", "Green", "Red", "Magenta"),
        values = c(24, 24, 34, 45, 49),
        Quarter = c("Period1","Period2" , "Period3", "Period3", "Period1"),
        Market = c("Camden", "StreetA", "DansFireplace", "StreetA", "DansFireplace"))
    
list = c("Market", "Quarter")

df_all <- do.call(rbind, lapply(list, function(x) {
    df_l <- df %>% 
              group_by_at(x) %>% 
              group_by(color) %>%
              summarise(values = sum(values)) %>% 
              mutate(cut = x) %>% 
              data.frame()
    colnames(df_l)[colnames(df_l) == x] <- "Grouping"
    df_l
}))

问题是虽然此代码是 运行,但它没有按 x 分组。只有当我删除 group_by(color) 时,它才会按 x.

分组

我的 objective 是按 xcolor 分组。

如果我对您的问题的理解正确,请将 colorx 包含在同一 group_by 语句中:

df_all <- do.call(rbind, lapply(list, function(x){
  df_l= df %>% group_by_at(c(x, "color")) %>% 
    summarise(values = sum(values)) %>% 
    mutate(cut= x) %>% 
    data.frame()
  colnames(df_l)[colnames(df_l)==x] <- "Grouping"
  df_l
}))

这给出:

        Grouping   color values     cut
1         Camden  Yellow     24  Market
2  DansFireplace   Green     34  Market
3  DansFireplace Magenta     49  Market
4        StreetA    Blue     24  Market
5        StreetA     Red     45  Market
6        Period1 Magenta     49 Quarter
7        Period1  Yellow     24 Quarter
8        Period2    Blue     24 Quarter
9        Period3   Green     34 Quarter
10       Period3     Red     45 Quarter