gpt4 book ai didi

r - dplyr 和 group_by : factor vs no factor

转载 作者:行者123 更新时间:2023-12-04 18:06:51 24 4
gpt4 key购买 nike

(所描述的行为是一个错误!)

我不明白 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

好吧,我可以只使用该因子,但这样我就失去了高度的数字特征。例如,我想按高度排序或选择最高的高度。

最佳答案

根据我对 group_by 的理解,它适用于任何变量类型,而不仅仅是因子。基于https://github.com/tidyverse/dplyr/issues/482和我自己的重现尝试,这个问题应该被关闭。

关于r - dplyr 和 group_by : factor vs no factor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24555010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com