2017-02-28 21 views
0

私はまだRで作業する方法を学んでいません。私は将来するつもりですが、この具体的な問題には私のより早い注意が必要です。2列のデータを行列に変換する方法は?

私は視覚化のためにGephiにインポートするために2列のデータを取ろうとしています。このへ

A x 
A y 
A z 

B x 
B y 
B w 

:具体的には、私はこれを変換しようとしている

x y 2 
x z 1 
x w 1 
y z 1 
y w 1 
z w 0 
:その後

x y z w 
x 0 2 1 1 
y 2 0 1 1 
z 1 1 0 0 
w 1 1 0 0 

、私は行列の一番上の三角形を取ると、この形式でそれを置く必要があります

これらのプロセスがどのように呼び出されているかわからないので、こことGoogleでの検索が空になりました。

誰かが正しい方向に私を向けることができますか?

+0

あなたの例は完全には明らかではありませんが、おそらく 'data.frame(table(unstack(df [2:1]))))' – alistaire

+0

なぜ対角要素はすべてゼロですか? 'xx'と' yy'要素は両方とも列AとBの両方に現れるので、どちらも1であるべきではありませんか? – useR

+0

@alistaireは動作しませんでしたが、私は答えを見つけました。ありがとう! –

答えて

1

見つけました。これを共起行列と呼びます。対角要素は、グループ内の他の要素と一緒に何回表示されるのかを数えているのでゼロですが、それ自体ではありません。働いていた以下のコード:

V <- crossprod(table(dat[1:2])) 
diag(V) <- 0 
V 

Source

私は下三角行列

V[upper.tri(V)] = NA 

で終わるために。そして、これは共同対応列で終わるために以下のコードを実行した

library(reshape2) 
df <- melt(V, na.rm=TRUE) 

関連する問題