从组信息创建邻接表

Create adjacency list from group info

我想从如下数据集创建邻接列表:

id   group
1      1
2      1
3      1
4      2
5      2

连接的id是同组的。因此,我想得到如下邻接表:

id   id2
1     2
1     3
2     1
2     3
3     1
3     2
4     5 
5     4

我正在努力弄清楚如何去做。特别是,我找到了一个顺序无关紧要的解决方案 ()。就我而言,确实如此,所以我不想放弃这些观察结果。

也许是这样的,使用 data.table:

require(data.table)
dt <- fread('id   group
1      1
2      1
3      1
4      2
5      2')

dt[, expand.grid(id, id), by = group][Var1 != Var2][, -1]
#    Var1 Var2
# 1:    2    1
# 2:    3    1
# 3:    1    2
# 4:    3    2
# 5:    1    3
# 6:    2    3
# 7:    5    4
# 8:    4    5