1

我正在尝试将一些 CSV 格式的金融报价数据(来源:HISTDATA_COM_ASCII_EURUSD_T_201209.zip)读入动物园系列。数据由一个时间列索引,该列包含格式为的时间戳,例如20120902 170010767- 几乎像,%Y%m%d %H%M%OS3除了毫秒不按%OS3.

我试图通过将时间戳的后(右)一半除以 1000 并再次粘贴在一起来强制要求小数点:

FUN <- function(i, format)  {
    sapply(strsplit(i, " "), function(j) strptime(paste(j[1], as.numeric(j[2])/1000), format = format))
}
read.zoo(file, format = "%Y%m%d %H%M%OS3", FUN = FUN, sep = ",")

但是,这并没有奏效-有人可以说明如何最好地正确执行此操作吗?

非常感谢

4

1 回答 1

1

你显然可以把它缩短,但这很好地给出了这个想法:

> tm <- "20120902 170010767"    
> gsub("(^........\\s......)(.+$)", "\\1.\\2", tm)
[1] "20120902 170010.767"
> strptime( gsub("(^........\\s......)(.+$)", "\\1.\\2", tm), "%Y%m%d %H%M%OS")
[1] "2012-09-02 17:00:10.767"
于 2012-09-19T00:00:37.373 回答