我有一个数据框,其中包含 6 个不同变量的观察结果和每个变量的样本权重。我正在尝试使用ddply
withsummarize
创建一个新的数据框,其中六个变量中的一个成为第一列,其他变量是其他变量的加权和。
例如,我的数据框看起来像这样:
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
.....
我想创建一个每个位置只有一个值的数据框,然后将每列中每个条件的 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)
...
)
有没有更简单的方法来做到这一点?有没有制作这种文件的好方法?
太感谢了!!