gpt4 book ai didi

r - 为什么 dplyr::distinct 对分组数据帧的行为是这样的

转载 作者:行者123 更新时间:2023-12-04 15:42:54 27 4
gpt4 key购买 nike

我的问题涉及 distinct函数来自 dplyr .

首先,设置数据:

set.seed(0)

df <- data.frame(
x = sample(10, 100, rep = TRUE),
y = sample(10, 100, rep = TRUE)
)

考虑以下两种 distinct 的用途.
df %>%
group_by(x) %>%
distinct()

df %>%
group_by(x) %>%
distinct(y)

第一个产生与第二个不同的结果。据我所知,第一组操作找到“ x 的所有不同值,并返回 y 的第一个值”,而第二组找到“对于 x 的每个值,找到所有不同的值 y 的“。

为什么会这样
df %>%
distinct(x, y)

df %>% distinct()

产生相同的结果?

编辑:看起来这是一个已知的错误: https://github.com/hadley/dplyr/issues/1110

最佳答案

据我所知,答案是 distinct在确定差异性时考虑对列进行分组,在我看来这与 dplyr 的其余部分不一致作品。

因此:

df %>%
group_by(x) %>%
distinct()

x 分组, 查找 x 中不同的值(!)。这似乎是一个错误。

然而:
df %>%
group_by(x) %>%
distinct(y)

x 分组, 查找 y 中不同的值给定 x .这相当于以下任一情况:
df %>%
distinct(x, y)

df %>% distinct()

两者都在 x 和 y 中找到不同的值。

带回家的信息似乎是:不要使用分组和 distinct .只需在 distinct 中使用相关列名作为参数.

关于r - 为什么 dplyr::distinct 对分组数据帧的行为是这样的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259518/

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