У меня есть кадр данных с наблюдениями за 6 различными переменными и весом выборки для каждой из них. Я пытаюсь использовать ddply
с summarize
для создания нового фрейма данных, в котором одна из шести переменных становится первым столбцом, а остальные представляют собой взвешенные суммы других.
Например, мой фрейм данных выглядит примерно так:
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)
...
)
Есть ли более простые способы сделать это? Есть ли хороший способ сделать такой файл?
Большое спасибо!!