2017-02-03 9 views
0

これは比較的シンプルに思えるかもしれませんが、私は新しいD3 chorddiagパッケージで作業しているので、データフレームから行列にデータを変更しようとしています。私がcirclizeを使用してデータフレーム機能を使用する前に、 Chorddiagは行列だけに依存しているように思えるので、どのようにタイプ間でジャンプするのだろうかと思っています。以下はその例です:コードダイアグラムでフレーム/データテーブルからRの行列にデータを変換する方法は?

library(circlize) 
library(chorddiag) 
from = c("A", "A", "A", "A", "B", "B", "C", "C", "D") 
to = c("B", "C", "D", "J", "E", "F", "G", "H", "I") 
value = c(5,8,2,5,5,6,7,8,11) 
food = data.frame(from, to, value) 
food 
chordDiagram(food) 


#now in chordiag how to transform into matrix like m? 
m <- matrix(c(11975, 5871, 8916, 2868, 
       1951, 10048, 2060, 6171, 
       8010, 16145, 8090, 8045, 
       1013, 990, 940, 6907), 
      byrow = TRUE, 
      nrow = 4, ncol = 4) 
groupnames <- c("black", "blonde", "brown", "red") 
row.names(m) <- groupnames 
colnames(m) <- groupnames 
chorddiag(m) 

どのように食べ物をmに似せて変更できますか?私は多分、以下のようなものを考えたが、私はに名前を追加するかどうかはわかりません、あなたの一例としての助けに感謝

matrix(data = food$value, nrow = length(food$from), ncol = length(food$to), byrow = TRUE 
     #,dimnames = 
     ) 
+0

'xtabs(value〜。、food)'? – alistaire

答えて

0

:。

> food_matrix <- matrix(data = food$value, nrow = length(food$from), ncol = length(food$to), byrow = TRUE) 
> food_matrix 
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] 
[1,] 5 8 2 5 5 6 7 8 11 
[2,] 5 8 2 5 5 6 7 8 11 
[3,] 5 8 2 5 5 6 7 8 11 
[4,] 5 8 2 5 5 6 7 8 11 
[5,] 5 8 2 5 5 6 7 8 11 
[6,] 5 8 2 5 5 6 7 8 11 
[7,] 5 8 2 5 5 6 7 8 11 
[8,] 5 8 2 5 5 6 7 8 11 
[9,] 5 8 2 5 5 6 7 8 11 

今、私たちはあなたの行と列に名前を付けますrownames()colnames()

> rownames(food_matrix) <- food$from 
> colnames(food_matrix) <- food$to 
> food_matrix 
    B C D J E F G H I 
A 5 8 2 5 5 6 7 8 11 
A 5 8 2 5 5 6 7 8 11 
A 5 8 2 5 5 6 7 8 11 
A 5 8 2 5 5 6 7 8 11 
B 5 8 2 5 5 6 7 8 11 
B 5 8 2 5 5 6 7 8 11 
C 5 8 2 5 5 6 7 8 11 
C 5 8 2 5 5 6 7 8 11 
D 5 8 2 5 5 6 7 8 11` 

との行列を出力し、あなたがどこを探しているということですか?

+0

これは完璧です、私は近くにいた!ありがとうございました – LoF10

関連する問題