为什么dplyr :: distinct在分组数据帧中的行为与此类似

Ale*_*lex 6 r dplyr

我的问题涉及到的distinct功能dplyr.

首先,设置数据:

set.seed(0)

df <- data.frame(
    x = sample(10, 100, rep = TRUE),
    y = sample(10, 100, rep = TRUE)
)
Run Code Online (Sandbox Code Playgroud)

考虑以下两种用法distinct.

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

df %>%
    group_by(x) %>%
    distinct(y)
Run Code Online (Sandbox Code Playgroud)

第一个产生第二个不同的结果.据我所知,第一组操作找到"所有不同的值x,并返回第一个值y",其中第二个找到"对于每个值x,找到所有不同的值y".

为什么会这样呢?

df %>%
    distinct(x, y)

df %>% distinct()
Run Code Online (Sandbox Code Playgroud)

产生相同的结果?

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

Cla*_*lke 2

据我所知,答案是distinct在确定独特性时考虑对列进行分组,这对我来说似乎与其余部分的dplyr工作方式不一致。

因此:

df %>%
group_by(x) %>%
distinct()
Run Code Online (Sandbox Code Playgroud)

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

然而:

df %>%
group_by(x) %>%
distinct(y)
Run Code Online (Sandbox Code Playgroud)

分组依据,查找给定x中不同的值。这相当于以下任一情况:yx

df %>%
distinct(x, y)

df %>% distinct()
Run Code Online (Sandbox Code Playgroud)

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

最重要的信息似乎是:不要使用分组和distinct. 只需使用相关的列名称作为 中的参数即可distinct