2017-09-29 9 views
1

Rでigraphパッケージを使用して、データセットの2つの列に接続されたコンポーネントを取得する方法を知っています。各コンポーネント(igraph)にクラスタIDを追加する方法

データは、私は次のやりたいこと

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 

これは意味があると思います。

df$ID <- cluster$membership[as.character(df$B)] 

はどちらが与えるべき

df$ID <- cluster$membership[as.character(df$A)] 

または

答えて

1

はあなたがいずれか実行して会員を抽出することができますありがとうござい同様

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 
+1

を、テーブル内のメンバーシップの関係を入れることができますmemDT = data.table(id = as.integer(names(cluster $ mem))、g = as.integer(cluster $ mem)); df [memDT、on =(A = id)、g:= i.g] ' – Frank

+0

意味があります。ありがとう。 – symphony

関連する問題