Проблема в Group_by_at & Group_by - PullRequest
       11

Проблема в Group_by_at & Group_by

0 голосов
/ 21 октября 2019

Ниже приведен фрейм данных и код, который я хотел бы выполнить. Как показано ниже, я хотел бы указать group_by 'x', а также 'color'. «x» - это строка, и поэтому я использовал функцию «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'.

Моя цель - сгруппировать по 'x' и 'color'.

1 Ответ

1 голос
/ 21 октября 2019

Если я правильно понял вашу проблему, включите color и x в одно и то же выражение 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
...