2014-11-20 30 views
-1

我有數據框由一天的選項的時鐘數據組成。我想每分鐘評估每個股票的最大交易量。我正在使用for循環,但由於我有3000多個代幣和9600000多個交易,所以它變得非常慢。 有沒有什麼辦法使用map/dictionary/hash表爲每個ticker從數據框中獲取行值?如何使用哈希映射/字典從數據框中獲取值?更快的替代循環在R

同樣的目標是:在每一分鐘,每股票的 當天 最大貿易optionData --->股票 - >分數據--->最大的貿易在分鐘

考慮: optionData作爲像日期,時間,tickerSymbols,TradeVolume,Delta,iVol等列的數據框

+0

你試過'dplyr'嗎? 'optionData%>%group_by(tickerSymbols,date,time)%>%filter(TradeVolume == max(TradeVolume))' – maloneypatr 2014-11-20 21:58:35

+0

不,我沒有。讓我檢查一下。非常感謝你maloneypatr – 2014-11-20 22:20:19

+0

是的,如果你的時間比分鐘更精細,這可能不起作用。但是,您可以使用lubridate將時間轉換爲分鐘。我將編寫我將用作答案的代碼。 – maloneypatr 2014-11-21 13:54:26

回答

0

確保您安裝並加載了必要的軟件包。如果他們已經安裝,不要擔心運行install.pacakges線。它在這個例子中被註釋掉了。

#install.packages(c('dplyr', 'lubridate')) 
library(dplyr) 
library(lubridate) 

所以,如果你的時間變量比分鐘更精細,這應該會有效果。 (喜歡它包括秒等)

optionData %>% 
    mutate(minute = minute(time), 
     hour = hour(time)) %>% 
    group_by(tickerSymbols, date, hour, minute) %>% 
    filter(TradeVolume == max(TradeVolume)) 

這應該做的竅門,如果你的時間變量已經代表分鐘。

optionData %>% 
    group_by(tickerSymbols, date, time) %>% 
    filter(TradeVolume == max(TradeVolume)) 

兩個答案都假定TradeVolume是我們能夠找到你要找的最大貿易。

相關問題