2012-02-16 4 views
2

csvのデータ形式は次のとおりです。このファイルを使ってヒートマップ用の行列を作成したいと思います。 R gglot私は使用するつもりです。データからr行列またはテーブルを作成する方法

 
A B  C 
1 apple 3 
2 book 5 
4 bag 1 
9 desk 4 
10 apple 8 
11 book 66 
14 desk 2 

上記のファイルを使用してヒートマップのマトリックスを作成したいと考えています。

 1 2 4 9 10 11 14 
apple 3 0 0 0 8 0 0 
book 0 5 0 0 0 66 0 
bag 0 0 1 0 0 0 0 
desk 0 0 0 4 0 0 2 

私は注文のための初期ファイルに別の列を持っています。

 
A B  C  D 
1 apple 3  4 
2 book 5  1 
4 bag 1  2 
9 desk 4  3 
10 apple 8 4 
11 book 66 1 
14 desk 2  3 

このD注文列のために私のマトリックスをどのように注文できますか?または私は1-14の列の合計で注文したいと思います。

答えて

0

read.tableでこれを行うことができます。 R-GUIに?read.tableと入力すると、正しいパラメータを選択するためのヘルプが表示されます。

+0

はい私はread.tableを使用しました。私が上に示したマトリックスのようなものではありません。私のテーブルから上記のようなマトリックスを作る方法。おかげさまで –

4

xtabsを使用できます。

d <- read.delim(textConnection(" 
A B C 
1 apple 3 
2 book 5 
4 bag 1 
9 desk 4 
10 apple 8 
11 book 66 
14 desk 2 
"), sep=" ") 

xtabs(C ~ B + A, d) 

     A 
B  1 2 4 9 10 11 14 
     0 0 0 0 0 0 0 
    apple 3 0 0 0 8 0 0 
    bag 0 0 1 0 0 0 0 
    book 0 5 0 0 0 66 0 
    desk 0 0 0 4 0 0 2 
+0

。それは本当に役立ちます! :-) –

+0

私はこのマトリックスを注文する必要があります、私は注文のための余分な列を持っています。私はそれを編集する私の質問を確認してください。 –

0

上記のVincentのread.delimパーツとリシェープアプローチを使用します。エレガントではありません...

d <- read.delim(textConnection(" 
A B C 
1 apple 3 
2 book 5 
4 bag 1 
9 desk 4 
10 apple 8 
11 book 66 
14 desk 2 
"), sep=" ") 

Var1 <- rep(d[,1], d[,3]) 
Var2 <- rep(d[,2], d[,3]) 
d <- data.frame(Var1=Var1, Var2=Var2) 
d <- cast(melt(d), Var2~value) 

> d 
    Var2 1 2 4 9 10 11 14 
1 apple 3 0 0 0 8 0 0 
2 bag 0 0 1 0 0 0 0 
3 book 0 5 0 0 0 66 0 
4 desk 0 0 0 4 0 0 2 
+1

ここでは、初期のdata.frame: 'dcast(d、B〜A、fill = 0)'を使った、より短い 'reshape'ソリューションがあります。 –