Skip to content
Prev 273738 / 398506 Next

Data frame aggregation

Here is one way to do it using data.table package:
+ John      ABC        100        0.05
+ John      ABC        1000       1.5
+ Alice     EFG        20         0.3
+ Paul      HIJ        50         1.0
+ Paul      JKL        60         2.0
+ Paul      MNO        12         3.0"), header = TRUE, as.is = TRUE)
+     , list(SHARES = sum(SHARES)
+           , PERFORMANCE = sum(SHARES * PERFORMANCE) / sum(SHARES)
+           )
+     , by = list(NAME, TICKER)
+ ]
      NAME TICKER SHARES PERFORMANCE
[1,]  John    ABC   1100    1.368182
[2,] Alice    EFG     20    0.300000
[3,]  Paul    HIJ     50    1.000000
[4,]  Paul    JKL     60    2.000000
[5,]  Paul    MNO     12    3.000000
On Fri, Oct 7, 2011 at 8:53 AM, PHILIP GLADWIN, BLOOMBERG TRADEBOOK:
<pgladwin2 at bloomberg.net> wrote: