6 つの異なる変数の観測値とそれぞれのサンプルの重みを含むデータ フレームがあります。ddply
を使用しsummarize
て新しいデータ フレームを作成しようとしています。このデータ フレームでは、6 つの変数のうちの 1 つが最初の列になり、他の変数は他の変数の加重合計になります。
たとえば、私のデータ フレームは次のようになります。
Location A B C D SampleWeight
x1 2 1 4 3 .1
x1 4 3 4 2 .3
x2 2 3 7 3 .7
x2 4 3 4 3 .8
.....
Location ごとに値を 1 つだけ持つデータ フレームを作成し、各列の各条件の SampleWeights と合計を合計したいと考えています。次のようになります。
Location Total A2 A4 B1 B3 C4 C7 ...
x1 0.4 .1 .3 .1 .3 .4 0.0
x2 1.5 .7 .8 0.0 1.5 .8 .7
これが私がやろうとしていた方法で、合計列が機能するようになりましたが、合計が他の列の特定の値を持つ行のみを表示するようにフィルターを作成する方法がわかりません。私が試したことのいくつかを含めました:
newdf <- ddply(mydf, ~ `Location`, summarize,
total = sum(`SampleWeight`),
A2 = sum(within(`SampleWeight`, A == "2")),
A4 = sum(filter(mydf$SampleWeight, A == "4")),
B1 = sum((mydf$B=="1")$sample_weight)
...
)
これを行うためのより簡単な方法はありますか? この種のファイラーを作成する良い方法はありますか?
どうもありがとう!!