I'm currently working on a data.table (myDT) with the folowing 3 columns :
TRADE_DATE TRADER VOLUME
01-MAY-2013 T1 100
01-MAY-2013 T2 200
01-MAY-2013 T3 500
01-MAY-2013 T4 200
02-MAY-2013 T1 400
02-MAY-2013 T2 500
02-MAY-2013 T3 50
02-MAY-2013 T4 50
I would like to find a way to calculate a share volume per trader per day. Currently I'm calculating the total volume per day then merge with the previous table to calculate the market share of each trader per day. Is there a more straightforward way to do it with data.tables ?
I attached herunder my code :
daylyVolume<-myDT[,list(DAILY_VOLUME=sum(VOLUME)),by="TRADE_DATE"]
myDT<-merge(myDT,daylyVolume,all=TRUE,by='TRADE_DATE')
myDT$"SHARE_VOLUME"<-100*myDT$"VOLUME"/myDT$"DAILY_VOLUME"
The result is the following:
TRADE_DATE TRADER VOLUME SHARE DAYLY_VOLUME
01-MAY-2013 T1 100 10 1000
01-MAY-2013 T2 200 20 1000
01-MAY-2013 T3 500 50 1000
01-MAY-2013 T4 200 20 1000
02-MAY-2013 T1 400 40 1000
02-MAY-2013 T2 500 50 1000
02-MAY-2013 T3 50 5 1000
02-MAY-2013 T4 50 5 1000