2017-11-07 14 views
0

私は有向グラフ関係を表形式で表すために使用しているデータフレームを持っています。今私は一度に3つのノードを検討しています。私は、node1とnode2の間の関係と、node2とnode3の間の関係を持っています。それぞれのノードには、対応するエッジ重みがあります。まれに、node1とnode3の間に関係があるが、それを分離するのに問題がある。 本質的に、私はA→B、B→Cを持ち、A→Cを探したい。 データフレームの例を以下に示す。R:既存の列関係に基づいて列を追加します。

df 
     node1 node2 weight1  node2_a  node3 weight2 
     5   2  .2   2   7  .3 
     10  20  .4   20   30  .6 
     10  30  .3   30   8  .3 

だから、私は基本的に私はこれを行うには良い方法があるかもしれません理解して、この

new_df 
     node1 node2 weight1  node2_a  node3 weight2 node1.a  node3.a  weight3 
     5   2  .2   2   7  .3   na   na   na 
     10  20  .4   20   30  .6   10   30   .3 
     10  30  .3   30   8  .3   na   na   na 

のように読んでいました別の3つの列を、持っていると思いますが、私は好奇心が強いどのように私がすることができますこのように動作させる。ありがとう、これが不明な場合は、私はさらに説明することができます。

+0

私はdata.tableがおそらく左の結合と一緒に私の最高の賭けかもしれないと思っていますが、それはかなり正しいものです。 – Ryan

+0

1と2,2,3の関係は何ですか? – Masoud

答えて

0

これは、多かれ少なかれ、あなたが必要なものを与える...

merge(df, df[1:3], 
     by.x=c("node1","node3"), by.y=c("node1","node2"), 
     all.x=TRUE) 

    node1 node3 node2 weight1.x node2_a weight2 weight1.y 
1  5  7  2  0.2  2  0.3  NA 
2 10  8 30  0.3  30  0.3  NA 
3 10 30 20  0.4  20  0.6  0.3 

これは、データフレームを並べ替え、それは問題ではないかもしれません。あなたは(weight1.yがあなたのweight3あり)並べ替えと列の名前を変更したいかもしれない、とweight1.yNAがされていないため、それらの行のためにnode1node3に等しいとしてあなたnode1.anode3.a列を追加します。

+1

これはすばらしく、私がやろうとしていたことです。どうもありがとう。 – Ryan

関連する問題