嗨我正在尋找子集一些細微的數據的時間。我通常使用xts
做這樣的事情:data.table時間子集與xts時間子集
subset.string <- 'T10:00/T13:00'
xts.min.obj[subset.string]
得到所有這些都是上午10點下午1點和(含)的每一天之間,並具有輸出作爲XTS格式的行。但對於我而言有點慢......如
j <- xts(rnorm(10e6),Sys.time()-(10e6:1))
system.time(j['T10:00/T16:00'])
user system elapsed
5.704 0.577 17.115
我知道data.table
爲v快速和子集化大型數據集使我一起琢磨是否與fasttime
包,如果它處理速度快POSIXct創作,將是值得的創建像
dt.time.subset <- function(xts.min.obj, subset.string){
require(data.table)
require(fasttime)
x.dt <- data.table(ts=format(index(xts.min.obj),"%Y-%m-%d %H:%M:%S %Z"),
coredata(xts.min.obj))
out <- x.dt[,some.subsetting.operation.using."%between%"]
xts(out,fastPOSIXct(out[,ts])
}
一個功能轉換的xts.min.obj成data.table添加某種字符索引,然後使用data.table於子集相關行使用輸出行用fasttime索引來重新創建一個xts輸出?或者對於已經高度優化並用C語言編寫的東西來說,這會產生太多的額外操作?
對不起,什麼是你的問題?你知道%之間的'%',那麼你還想要什麼? – eddi
好吧,不太清楚如何使用%與時間之間的%首先,並且此刻我將它轉換爲字符串而不是使用POSIXct,因爲我在POSIXct的印象子集中速度很慢... Plus我認爲它不適用於每一天... –
每天的部分通過執行格式(...,「%H:%M」)%%(「10:00」,「13:00 「),但我仍然不確定爲什麼你需要'data.table'來爲* just * subsetting - 如果你的唯一目的是子集化,我非常懷疑它在'xts'和'data.table'之間來回切換但你總是可以給我們示例數據,你的操作很慢玩) – eddi