我有大量的 apx 15 mio 交易数据。以下形式的行:
mydata_tsample
Size TradingCost
10000 80
2733000 79.343
750000 78.125
750000 77.875
150000 83.875
105000 86.875
105000 87.20
105000 87.54
70000 87.78
70000 87.9
175000 87.1
175000 87.6
200000 2
200000 56
200000 87.5
200000 80
200000 50.2
370000 7.25
900000 15.42
我想运行两个循环:
1) 对所有“大小”之间的交易进行聚类/排序,比如说 1-100'000。
2) 然后根据“TradinCost”从 1) 中删除该集群中位于 1.5*四分位间距之外的那些交易
3) 将大小间隔从 1) 增加 100'00,现在对大小为 100'000-200'000 的交易运行相同的操作。这个循环上升到 5'000'000。
以下代码可以做到这一点,但我遇到的问题是速度/效率。如何编写代码来计算最多 20 mio 的样本。线?使用以下代码,需要几个小时。
for (i in 0:50){
mydata_tsample_tempI=subset(mydata_tsample,
Size >=(i)*100000 &
Size <(i+1)*100000)
quantiles = quantile(mydata_tsample_tempI$TradingCost, probs = c(.25, .75))
range = 1.5 * IQR(mydata_tsample_tempI$TradingCost)
mydata_tsample_tempII = subset(mydata_tsample_tempI,
mydata_tsample_tempI$TradingCost > (quantiles[1] - range) &
mydata_tsample_tempI$TradingCost < (quantiles[2] + range))
mydata_tsample_new = data.frame(rbind(mydata_tsample_new, mydata_tsample_tempII))
}