dplyr:即使不选择它也会获得group_by-column

时间:2014-09-25 13:20:07

标签: r dplyr

选择列时,我得到一列我没有选择但是它是group_by列:

library(magrittr)
library(dplyr)

df <- data.frame(i=c(1,1,1,1,2,2,2,2), j=c(1,2,1,2,1,2,1,2), x=runif(8))

df %>% 
  group_by(i,j) %>%
  summarize(s=sum(x)) %>%
  filter(i==1) %>%
  select(s)

即使我没有选择它,我也会得到专栏:

  i         s
1 1 0.8355195
2 1 0.9322474

为什么会发生这种情况(为什么不是第j列?)以及如何避免它?好的,我可以在开头过滤....

1 个答案:

答案 0 :(得分:5)

那是因为分组变量默认是进行的。请参阅the dplyr vignette

  

分组会影响动词,如下所示:分组select()与未分组select()相同,但分组变量始终保留。

请注意(每个)summarize剥离一层分组(在您的情况下为j),因此在summarize之后,您的数据仅按{{1}分组并且在输出中打印出来。如果您不想要,可以在选择i之前取消组合数据:

s