我知道如何在R中使用igraph包来获取数据集中两列中的连接组件。
数据集
library(data.table)
df = fread(
"rn A B
1: 11 6
2: 12 6
3: 11 7
4: 13 2
5: 12 7
6: 12 8
7: 17 2
8: 13 1")[, rn := NULL][]
library(igraph)
g = graph_from_data_frame(df)
cluster = clusters(g)
list = groups(cluster)
接下来我要做的是为每个连接的组件分配群集ID。
A B ID
1: 11 6 1
2: 12 6 1
3: 11 7 1
4: 13 2 2
5: 12 7 1
6: 12 8 1
7: 17 2 2
8: 13 1 2
我希望这是有道理的。谢谢
答案 0 :(得分:2)
您可以通过以下方式提取会员资格:
df$ID <- cluster$membership[as.character(df$A)]
或者
df$ID <- cluster$membership[as.character(df$B)]
两者都应该给出:
df
# A B ID
#1: 11 6 1
#2: 12 6 1
#3: 11 7 1
#4: 13 2 2
#5: 12 7 1
#6: 12 8 1
#7: 17 2 2
#8: 13 1 2