サイズ103740 x 4のデータフレームをワイドフォーマットに再形成したい、つまり、最初のテキストブロックから2番目のテキストブロックに移動したいとします。データフレームの一部に適用する場合は、次の機能が十分に動作しますが、完全なデータフレームに適用されたとき、それは私のマシンの使用可能なメモリを使い果たす:Rの大きなデータフレームをアンスタッキングするためのより良い方法は何ですか?
reshape(analysis1[1:8], idvar=c("name", "sire_name"),
timevar = "course", direction = "wide")[, -c(1,2)]
このデータフレームのスタックを解除するには、いくつかのより良い方法は何ですか?
name sire_name course appearance
1 A Beetoo Bahhare Kempton 0
2 A Beetoo Bahhare Lingfield 9
3 A Beetoo Bahhare Southwell 0
4 A Beetoo Bahhare Wolverhampton 0
5 A Bid In Time Danetime Kempton 0
6 A Bid In Time Danetime Lingfield 3
7 A Bid In Time Danetime Southwell 2
8 A Bid In Time Danetime Wolverhampton 2
...
Kempton Lingfield Southwell Wolverhampton
1 0 9 0 0
5 0 3 2 2
...
私はデータフレームをデータテーブルに移動しようとしましたが、これを単独で行うだけでは効果がありません。
これはおそらく、データフレームが適切にソートされていることを前提としています。 – joran
はい、最初のバージョンでは、データフレームが示されているようにソートされていると想定しています。そうでない場合は、2番目のバージョンを使用してください。 – John
これは基本的には 'reshape :: melt'と同じです。私はそれがはるかに遅い場合は驚かれるだろう。そしてそれが遅い場合、私はあなたがおそらく長い間違った時間で時間を節約すると主張したいと思います。なぜなら、欠損値などを心配する必要がないからです。 – hadley