У меня есть торговые данные следующим образом:R: агрегирование данных между событиями
TradeNumber OpenTime CloseTime Profit TradeHour Equity
1 01/01/2014 13:10 01/01/2014 14:40 10 13 520
2 01/01/2014 13:25 01/01/2014 13:28 20 13 520
3 01/01/2014 13:29 01/01/2014 15:40 -50 13 520
4 01/01/2014 13:30 01/01/2014 14:05 -5 13 520
5 01/01/2014 14:12 01/01/2014 14:40 12 14 560
6 01/01/2014 14:21 01/01/2014 14:45 -16 14 560
7 01/01/2014 14:50 01/01/2014 14:59 -14 14 560
8 01/01/2014 14:58 01/01/2014 15:05 56 14 560
Я ищу, чтобы найти, для каждой сделки, сумма прибыли всех других сделок, которые закрыты в тот же час, но до этой конкретной торговли, и добавить ее в капитал во время торговли. Таким образом, в данном примере, результат будет:
TradeNumber OpenTime CloseTime Profit TradeHour Equity
1 01/01/2014 13:10 01/01/2014 14:40 10 13 520
2 01/01/2014 13:25 01/01/2014 13:28 20 13 520
3 01/01/2014 13:29 01/01/2014 15:40 -50 13 520 + 20
4 01/01/2014 13:30 01/01/2014 14:05 -5 13 520 + 20
5 01/01/2014 14:12 01/01/2014 14:40 12 14 560
6 01/01/2014 14:21 01/01/2014 14:45 -16 14 560 - 5
7 01/01/2014 14:50 01/01/2014 14:59 -14 14 560+10-5+12-16
8 01/01/2014 14:58 01/01/2014 15:05 56 14 560+10-5+12-16
торговли номер 8, например, открыт в 14:58 на 01/01/2014. До открытия было еще 4 сделки, закрытые в этот час (торги 1, 4, 5 и 6). Поэтому я хотел бы добавить прибыль от этих 4 сделок к капиталу в начале часа и разместить это число в столбце акций данных торгов.
for (i in 1:nrow(tradeData))
{
tradeData$EquityUSD1 [i] = tradeData$Equity [i] + sum(tradeData$Profit[tradeData$CloseTime <= tradeData$OpenTime[i] & tradeData$CloseTime >= tradeData$tradeHour[i,1]])
}
Это работает, но довольно медленно, и я хотел бы, чтобы ускорить его, так как есть десятки тысяч сделок.
Любые идеи? Пожалуйста, дайте мне знать, если я опустил важные данные/информацию
Благодаря
Функции окна 'dplyr' могут помочь вам http://cran.r-project.org/web/packages/dplyr/vignettes/window-functions.html – ckluss