7

解釈に関係なく、データをロングフォーマットまたはワイドフォーマットで保存する方が効率的かどうかに興味がありますか? 私はobject.size()メモリ内のサイズを決定するために使用しましたが、それらに大きな違いはなく (サイズに関しては long の方がわずかに効率的です)、値は推定値にすぎません。

生のサイズに加えて、モデリングで使用するときに操作するという点で、どちらの形式がより効率的かということも考えています。

4

2 に答える 2

6

2 つの異なるmatrixes のメモリ使用量は同じである必要があります。

> object.size(long <- matrix(seq(10000), nrow = 1000))
40200 bytes
> object.size(square <- matrix(seq(10000), nrow = 100))
40200 bytes

効率の違いは、R を使用する際の非効率性に比べれば小さいので、測定可能でさえあれば、ほとんど考慮する必要はありません。

aは ofのdata.framea として実装されるため、状況は a の場合とは大きく異なります。listvector

> object.size(as.data.frame(long))
41704 bytes
> object.size(as.data.frame(square))
50968 bytes

これの時間効率は、正確に何をしたいかによって異なります。

于 2011-11-18T11:17:43.040 に答える
1

マトリックスの場合、まったく違いはありません。そのマトリックスの data.frame についても同じことが言えます。マトリックスの形状を変更することは、ディメンション属性を割り当てるだけです...ほとんどの場合。

そのデータを何らかの方法で分類して追加情報を追加する場合、通常はワイドの方がストレージ効率が高くなりますが、ロングの方が一般的に効率的に処理されます。これは、スペース効率が悪いため、長い形式の必須のプロパティではありませんが、一般に、ワイドの列名に複合変数の説明があり、それが分離されて新しい列、またはロングの複数の列が与えられます。したがって、これらの冗長性により、より多くのスペースが必要になります。処理面では、多変量の列指定を持つ幅広い形式よりも、長いデータを集計したり、削除する特定のケースを選択したりする方が簡単です。

データが完全な長方形 (または立方体など) でない場合は、Long が (これら 2 つの中で) 最良の方法でもあります。

于 2011-11-18T12:26:55.277 に答える