(描述的行为是一个错误!)
我不明白group_by
对作为因素而非作为因素的列的影响。以下分析了两种可能性:
library(dplyr)
df <- data.frame(value=seq(1,10), height=c(rep(1,5),rep(2,5)))
# height is no factor
dfs <- df %>% group_by(height) %>% summarize(m=mean(value))
dfs$height==dfs$height[1]
# height is factor
df$height <- as.factor(df$height)
dfs <- df %>% group_by(height) %>% summarize(m=mean(value))
这里是一个数据框
value height
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
6 6 2
7 7 2
8 8 2
9 9 2
10 10 2
按高度汇总。当df$height
不是因素时,结果如下所示:
height m
1 1 4.500000
2 1 3.000000
3 1 2.000000
4 1 1.000000
5 2 9.000000
6 2 6.000000
7 2 8.333333
如果df$height
是一个因素,结果就是我想要的结果:
height m
1 1 3
2 2 8
为什么会发生这样的事情?我的第一个猜测是它是一个数值问题,而非因子height
的差别很小。但是,上面的测试显示所有height==1
都相同:
> dfs$height==dfs$height[1]
[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE
好吧,好吧,我可以使用因子但是我放松了高度的数字特征。例如,我想按高度排序或选择最高的高度。
答案 0 :(得分:1)
根据我对group_by
的理解,它适用于任何变量类型,而不仅限于因素。根据{{3}}和我自己的尝试进行复制,应该解决此问题。