2011-08-10 16 views
2

私はキーと値のペアのリストを持っており、セルが各キーと値の組み合わせのカウントを表す2dマトリックスに変換したいと考えています。ここではサンプルデータフレームは、現時点でdaply出力オブジェクトの値をカスタマイズする

doc_id,link 
1,http://example.com 
1,http://example.com 
2,http://test1.net 
2,http://test2.net 
2,http://test5.net 
3,http://test1.net 
3,http://example.com 
4,http://test5.net 

ですが、私はRのplyrパッケージおよび変換のようなもののために、次のコマンドを使用しています:ここで

link_matrix <- daply(link_list, .(doc_id, link), summarise, nrow(piece)) 

は、結果マトリックスオブジェクトです:

結果として得られる配列エントリはうまくいきます。それらは私にキー/値のカウントを与えます。実際に必要なのは結果マトリックスの数値です。

doc_id http://example.com http://test1.net http://test2.net http://test5.net 
    1 2     0    0    0    
    2 0     1    1    1   
    3 1     1    0    0    
    4 0     0    0    0 

私は行列要素を反復し、必要な変換を実行することにより、これを行うことができますが、私は私がdaply機能で直接それを行うことができ、より良い解決策があることを確信している:それは次のようになります。私はちょっと分かりませんでした。

答えて

3

あなたは(すなわちsummariseを削除)、コードの以下の簡素化により、これを行うことができます。

daply(link_data, .(doc_id, link), nrow) 

doc_id http://example.com http://test1.net http://test2.net http://test5.net 
    1     2    NA    NA    NA 
    2     NA    1    1    1 
    3     1    1    NA    NA 
    4     NA    NA    NA    1 

を次に、配列のサブセットを使用し、NA値を除去することが重要である場合:

aa <- daply(link_data, .(doc_id, link), nrow) 
aa[is.na(aa)] <- 0 
aa 

     link 
doc_id http://example.com http://test1.net http://test2.net http://test5.net 
    1     2    0    0    0 
    2     0    1    1    1 
    3     1    1    0    0 
    4     0    0    0    1 
+0

cool、thx。できます.. – behas

0

castの機能をreshapeから使用してください。

library(reshape) 
cast(transform(mydf, value = 1), doc_id ~ link) 
関連する問題