我有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解决方案没问题.
使用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)