如何选择group_by之后未汇总的列?

时间:2019-01-18 17:42:51

标签: r dplyr

df <- data.frame(a=1:100, b=1:100, c='categorical')

df %>% summarise(new_a=sum(a), new_b=sum(b)) %>% select(new_a, new_b, c)


Error: `c` must evaluate to column positions or names, not a function

如何使上面的代码做我想做的,就是保持c。每个组的c值将相同。

1 个答案:

答案 0 :(得分:3)

如果未使用group_by指定它,则默认行为是汇总并仅包含summarize中指定的内容,因此在代码列中c不存在。如果您将其指定为一个组,则将包括该列。

library(dplyr)

df <- data.frame(a=1:100, b=1:100, c='categorical')

df %>%
  group_by(c) %>% 
  summarise(new_a=sum(a), new_b=sum(b)) %>% select(new_a, new_b, c)

#> # A tibble: 1 x 3
#>   new_a new_b c          
#>   <int> <int> <fct>      
#> 1  5050  5050 categorical

reprex package(v0.2.1)于2019-01-18创建