2012-09-18 5 views
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 = ",") 

- 누군가가 창고하시기 바랍니다 수 이 일을 올바르게하는 법에 대한 약간의 조명?

많은 감사

답변

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" 
+0

주먹으로 날 이길! 'gsub ("(\\ d {3} $)", ". \\ 1", tm)' –

+0

3 개의 문자로 된 모든 경우를 얻을 수 있을지 확신하지 못했습니다. 'millisecond'열을 사용했거나 비슷한 "(... $)"문자를 사용했을 수도 있습니다. (단지 성격이 약간 같고 성가신 이동키가 많지 않습니다.) –

+0

굉장한, DWin - 훌륭합니다. 그러나'gsub ("(\\ d {3} $)", ". \\ 1", tm)'을 사용하면 어떤 위험이 있습니까? – mchen