相关疑难解决方法(0)

data.table时间子集vs xts时间子集

嗨,我希望按时间分配一些细微的数据.我通常使用xts类似的东西:

subset.string <- 'T10:00/T13:00' 
xts.min.obj[subset.string]
Run Code Online (Sandbox Code Playgroud)

获取所有在每天上午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 
Run Code Online (Sandbox Code Playgroud)

我知道这data.table是快速的并且在子集化大型数据集时所以我想知道是否与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])
}
Run Code Online (Sandbox Code Playgroud)

将xts.min.obj转换为data.table添加某种字符索引,然后使用data.table对相关行进行子集,使用输出行索引和fasttime来重新创建xts输出?或者对于已经高度优化并用C语言编写的东西来说,这是多少多余的操作?

benchmarking r xts data.table

5
推荐指数
1
解决办法
941
查看次数

标签 统计

benchmarking ×1

data.table ×1

r ×1

xts ×1