首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“Group_by_at & Group_by”杂志

“Group_by_at & Group_by”杂志
EN

Stack Overflow用户
提问于 2019-10-21 15:04:07
回答 1查看 50关注 0票数 0

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

代码语言:javascript
复制
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分组。

我的目标是同时按xcolor进行分组。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-21 15:26:28

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

代码语言:javascript
复制
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
}))

这意味着:

代码语言:javascript
复制
        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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58489093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档