结合group_by和distinct

bjo*_*eph 9 r dplyr

我有data.frame两个变量id.x,id.y其组合唯一标识每一行,但在数据集中重复多次.

我想用dplyr,以group_by id.x使得每个id.x与不同的匹配id.y.

编辑已编辑的示例以突出显示不同数量的unique id.x.id.y

一个例子:

  id.x id.y
    a    o
    a    p
    a    q
    c    o
    c    p
    c    q
Run Code Online (Sandbox Code Playgroud)

会回来:

 id.x id.y
    a    o
    c    q
Run Code Online (Sandbox Code Playgroud)

输入例如:

structure(list(id.x = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("a", 
"c"), class = "factor"), id.y = structure(c(1L, 2L, 3L, 1L, 2L, 
3L), .Label = c("o", "p", "q"), class = "factor")), .Names = c("id.x", 
"id.y"), row.names = c(NA, -6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

编辑如果我想要的结果可以在不使用group_by或没有使用的情况下完成distinct!我也用data.table,并且data.table解决方案没问题.

man*_*ark 1

使用dplyr

df %>% filter(dense_rank(id.x)==dense_rank(id.y))
Run Code Online (Sandbox Code Playgroud)

返回

  id.x id.y
1    a    o
2    c    p
Run Code Online (Sandbox Code Playgroud)