我正在尝试将"ddply"功能与"summary"功能结合使用,但我遇到了困难.
以下是我的代码摘录:
orderSubsConsolidate = ddply(merged, .(RIC,leg),summarize,fill.Quant = sum(fill.Quant),
fill.Price = function(merged){sum(merged[,7]*merged[,8])/sum(merged[,7})
Run Code Online (Sandbox Code Playgroud)
"合并"是包含我想要总结的信息的矩阵.我按"RIC"和"leg"栏目进行总结.我遇到的问题是将函数应用于fill.Price列.
这是"合并"矩阵的摘录:
Run Code Online (Sandbox Code Playgroud)Trade RIC leg Basket.Name Status Order.Msg fill.Quant fill.Price ATNATNP ATNJ.J 1 ATNATNP1a1 Filled 100 200 ATNATNP ATNPp.J 2 ATNATNP2a1 Filled 100 200 ATNATNP ATNJ.J 1 ATNATNP1b1 300 400
基本上,上面的代码试图通过RIC和leg聚合fill.Quant列,然后使用[(fill.Price*fill.Quant)/fill.Quant]填充相应的fill.Price列,从而产生如下矩阵:
Run Code Online (Sandbox Code Playgroud)RIC leg fill.Quant fill.Price ATNJ.J 1 400 350 ATNPp.J 2 100 350
任何帮助将不胜感激.如果有什么不清楚,请告诉我.
谢谢!
麦克风
看起来应该是这样
orderSubsConsolidate = ddply(merged, .(RIC,leg), summarize,
fill.Quant = sum(fill.Quant),
fill.Price = weighted.mean(fill.Price, fill.Quant))
Run Code Online (Sandbox Code Playgroud)
您还可以使用匿名函数:
ddply(merged, .(RIC,leg), function(x)
data.frame( fill.Quant = sum(x$fill.Quant),
fill.Price = sum(x[,7]*x[,8])/sum(x[,7])))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
563 次 |
| 最近记录: |