使用 R 对链接的唯一 ID 对进行分组
Grouping linked unique ID pairs using R
我正在尝试使用 R link 将成对的唯一 ID 组合在一起。在下面的示例中,我有两个指示 link 年龄的 ID(此处为 ID1 和 ID2)。我正在尝试创建 linked 的行组。在此示例中,A linked 到 B,B linked 到 D,D 又 linked 到 E。因为这些都是连接的,所以我想将它们组合在一起。接下来,还有 X 被 linked 到 Y 和 Z。因为这两个也是连接的,所以我想将它们也分配给一个组。我该如何使用 R 来解决这个问题?
谢谢!
示例数据:
ID1 ID2
A B
B D
D E
X Y
X Z
DPUT R 表示法
structure(list(id1 = structure(c(1L, 2L, 3L, 4L, 4L), .Label = c("A", "B", "D", "X"), class = "factor"), id2 = structure(1:5,.Label = c("B", "D", "E", "Y", "Z"), class = "factor")), .Names = c("id1", "id2"), row.names = c(NA, -5L), class = "data.frame")
需要输出:
ID1 ID2 GROUP
A B 1
B D 1
D E 1
X Y 2
X Z 2
正如@Frank 在评论中提到的那样,您可以使用 igraph
:
library(igraph)
idf <- graph.data.frame(df)
clusters(idf)$membership
给出:
A B D X E Y Z
1 1 1 2 1 2 2
是否要将结果分配回 df
的行:
merge(df, stack(clusters(idf)$membership), by.x = "id1", by.y = "ind", all.x = TRUE)
我正在尝试使用 R link 将成对的唯一 ID 组合在一起。在下面的示例中,我有两个指示 link 年龄的 ID(此处为 ID1 和 ID2)。我正在尝试创建 linked 的行组。在此示例中,A linked 到 B,B linked 到 D,D 又 linked 到 E。因为这些都是连接的,所以我想将它们组合在一起。接下来,还有 X 被 linked 到 Y 和 Z。因为这两个也是连接的,所以我想将它们也分配给一个组。我该如何使用 R 来解决这个问题?
谢谢!
示例数据:
ID1 ID2
A B
B D
D E
X Y
X Z
DPUT R 表示法
structure(list(id1 = structure(c(1L, 2L, 3L, 4L, 4L), .Label = c("A", "B", "D", "X"), class = "factor"), id2 = structure(1:5,.Label = c("B", "D", "E", "Y", "Z"), class = "factor")), .Names = c("id1", "id2"), row.names = c(NA, -5L), class = "data.frame")
需要输出:
ID1 ID2 GROUP
A B 1
B D 1
D E 1
X Y 2
X Z 2
正如@Frank 在评论中提到的那样,您可以使用 igraph
:
library(igraph)
idf <- graph.data.frame(df)
clusters(idf)$membership
给出:
A B D X E Y Z
1 1 1 2 1 2 2
是否要将结果分配回 df
的行:
merge(df, stack(clusters(idf)$membership), by.x = "id1", by.y = "ind", all.x = TRUE)