gpt4 book ai didi

r - 在 dplyr 0.5.0 中,在分组数据框中,为什么 slice(1) 没有给出与 filter(row_number() == 1) 相同的行排序?

转载 作者:行者123 更新时间:2023-12-01 03:27:27 27 4
gpt4 key购买 nike

我观察到 slicegroup_by 时,在某些情况下更改行的顺序用来。

tmp_df2 <- data.frame(a = c(1, 3, 2, 4), b = c(1, 2, 3, 4))

tmp_df2 %>%
group_by(a) %>%
slice(1)


Source: local data frame [4 x 2]
Groups: a [4]

a b
<dbl> <dbl>
1 1 1
2 2 3
3 3 2
4 4 4


tmp_df2 %>%
group_by(a) %>%
filter(row_number() == 1)


Source: local data frame [4 x 2]
Groups: a [4]

a b
<dbl> <dbl>
1 1 1
2 3 2
3 2 3
4 4 4

它看起来像 slice按分组变量的升序对输出重新排序。但是,文档表明 slice和过滤器应该以相同的方式运行,特别是来自 ?slice (强调我的):

Slice does not work with relational databases because they have no intrinsic notion of row order. If you want to perform the equivalent operation, use filter() and row_number().

最佳答案

看代码,slice()通过迭代组来工作,因此其输出将采用组排序形式。我怀疑它比等效的 filter 更有效方法,这就是它实际存在的原因 - 否则将其包含在内没有任何好处。

我会留下这个作为评论,但我没有足够的代表 - 所以如果我错了,请温和地拒绝投票

关于r - 在 dplyr 0.5.0 中,在分组数据框中,为什么 slice(1) 没有给出与 filter(row_number() == 1) 相同的行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40187530/

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