按相交向量分组
考虑这个 tibble
:
tibble(id = list(c(1, 2), c(3, 4, 7), c(3, 5), 10, c(5, 6)))
id
<list>
1 <dbl [2]>
2 <dbl [3]>
3 <dbl [2]>
4 <dbl [1]>
5 <dbl [2]>
如果一行中的一个或多个值也在另一行中,我想对 id
进行分组。这里,第一行是1 2
,并且1和2都没有出现在其他行中,因此它是唯一分配的group == 1
。与第 4 行相同。第 2、3 和 5 行共享数字 3(用于第 2 和第 3 行)和数字 5(第 3 和第 5 行),然后将它们全部分配到同一组。
预期输出:
# A tibble: 5 x 2
id group
<list> <dbl>
1 <dbl [2]> 1
2 <dbl [3]> 2
3 <dbl [2]> 2
4 <dbl [1]> 3
5 <dbl [2]> 2
关于如何做到这一点有什么想法吗?也许igraph
?
Consider this tibble
:
tibble(id = list(c(1, 2), c(3, 4, 7), c(3, 5), 10, c(5, 6)))
id
<list>
1 <dbl [2]>
2 <dbl [3]>
3 <dbl [2]>
4 <dbl [1]>
5 <dbl [2]>
I'd like to group id
if one or more value in one row is also in another row. Here, the first row is 1 2
and neither 1 nor 2 appear in other rows, it is then the only one assigned group == 1
. Same with row 4. Row 2, 3 and 5 share digit 3 (for row 2 and 3) and digit 5 (row 3 and 5), they are then all assigned to the same group.
Expected output:
# A tibble: 5 x 2
id group
<list> <dbl>
1 <dbl [2]> 1
2 <dbl [3]> 2
3 <dbl [2]> 2
4 <dbl [1]> 3
5 <dbl [2]> 2
Any ideas on how to do this? maybe igraph
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)