选择列时,我得到一列我没有选择但是它是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列?)以及如何避免它?好的,我可以在开头过滤....
答案 0 :(得分:5)
那是因为分组变量默认是进行的。请参阅the dplyr
vignette:
分组会影响动词,如下所示:分组
select()
与未分组select()
相同,但分组变量始终保留。
请注意(每个)summarize
剥离一层分组(在您的情况下为j
),因此在summarize
之后,您的数据仅按{{1}分组并且在输出中打印出来。如果您不想要,可以在选择i
之前取消组合数据:
s