gpt4 book ai didi

r - 在 R 中计算每天的市场份额

转载 作者:行者123 更新时间:2023-12-04 04:37:41 24 4
gpt4 key购买 nike

我目前正在处理具有以下 3 列的 data.table (myDT):

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

我想找到一种方法来计算每个交易者每天的股票交易量。目前我正在计算每天的总交易量,然后与上一个表格合并计算每个交易者每天的市场份额。有没有更直接的方法可以用 data.tables 做到这一点?

我附上了我的代码:
  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"

结果如下:
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

最佳答案

一个简单的方法是这样做:

dt[,list(VOLUME,DAILY_VOLUME=sum(VOLUME),SHARE=VOLUME/sum(VOLUME)*100),by="TRADE_DATE"]

TRADE_DATE VOLUME DAILY_VOLUME SHARE
1: 01-MAY-2013 100 1000 10
2: 01-MAY-2013 200 1000 20
3: 01-MAY-2013 500 1000 50
4: 01-MAY-2013 200 1000 20
5: 02-MAY-2013 400 1000 40
6: 02-MAY-2013 500 1000 50
7: 02-MAY-2013 50 1000 5
8: 02-MAY-2013 50 1000 5

如果您只想计算份额,更有效的方法是:
R> dt[,SHARE:=VOLUME/sum(VOLUME)*100,by="TRADE_DATE"]
R> dt

TRADE_DATE TRADER VOLUME SHARE
1: 01-MAY-2013 T1 100 10
2: 01-MAY-2013 T2 200 20
3: 01-MAY-2013 T3 500 50
4: 01-MAY-2013 T4 200 20
5: 02-MAY-2013 T1 400 40
6: 02-MAY-2013 T2 500 50
7: 02-MAY-2013 T3 50 5
8: 02-MAY-2013 T4 50 5

关于r - 在 R 中计算每天的市场份额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com