2013-04-23 1 views
5

나는 다음과 같은 XTS 행렬이 있습니다임의의 시간 관측에서 정규 xts 기간을 생성하는 방법은 무엇입니까?

내가 시계열 항목이 기간의 마지막 값을 운반 매 100 밀리 초를 생성해야
> options(digits.secs = 6) 
> set.seed(1234) 
> xts(1:10, as.POSIXlt(1366039619, tz="EST", origin="1970-01-01") + rnorm(10, 500000, 250000)/1000000) 
          [,1] 
2013-04-15 10:26:58.913576 4 
2013-04-15 10:26:59.198234 1 
2013-04-15 10:26:59.277491 10 
2013-04-15 10:26:59.356315 7 
2013-04-15 10:26:59.358887 9 
2013-04-15 10:26:59.363342 8 
2013-04-15 10:26:59.569357 2 
2013-04-15 10:26:59.607281 5 
2013-04-15 10:26:59.626514 6 
2013-04-15 10:26:59.771110 3 
Warning message: 
timezone of object (EST) is different than current timezone(). 

. 예 :

      [,1] 
2013-04-15 10:26:58.000000 4 
2013-04-15 10:26:59.100000 4 
2013-04-15 10:26:59.200000 1 
2013-04-15 10:26:59.300000 10 
2013-04-15 10:26:59.400000 8 
... 

마지막 항목이 .300000에서 .99999 기간에 대한 마지막 항목 인 8을 어떻게 유지하는지 유의하십시오.

+0

두 번째 개체를 어떻게 만들었습니까? 'rnorm'을 호출하기 전에'set.seed' 호출을 추가 할 수 있습니까? 예제가 완전히 재현 가능합니까? –

+0

두 번째 개체? 나는 그렇지 않다. 그것은 내가 필요한 결과의 예일 뿐이다. 첫 번째 객체에 set.seed()를 추가 할 것이다. –

+0

하나 이상의 기간에 여러 번 관측 한 경우 어떻게됩니까? –

답변

6

1 초 미만의 정확도에 대한 지원이 좋지 않아 Windows에서 제대로 작동하는지 잘 모르겠지만 우분투에서 제대로 작동합니다.

library(xts) 
options(digits.secs=6) 
set.seed(1234) 
x <- xts(1:10, as.POSIXlt(1366039619, tz="EST", origin="1970-01-01") 
    + rnorm(10, 500000, 250000)/1000000) 
ti <- trunc(index(x)) 
ms <- rep(seq(min(ti),max(ti),by="s"), each=10)+0:9/10 
a <- merge(x,ms,fill=na.locf)[ms] 

당신은 당신이 불규칙한 데이터로부터 정기적 XTS 시리즈를 만들 필요가 다른 인스턴스로이 같은 처리 것을 알 수 있습니다. 1 초 미만의 시퀀스를 생성하는 것이 더 어렵 기 때문에 조금 더 어렵습니다.

+1

일부 경우 병합 된 세트에서 중복 색인 항목을 발견했습니다. 내 생각에 같은 정확한 색인이 'x'와 'ms'(밀리 초 정밀도와 동일한 색인)에 나타날 때라고 생각합니다. 이 줄은 중복을 제거 할 것이다 :'a = a [- (어느 c (index (a [-1]), NA) == index (a)))]]' –

+0

@ Robert-Kubrick 이것을 똑같은 문제에 부딪혔다. 이 의견은 중요한 것입니다! 주목 해 주셔서 고맙습니다 ... – FXQuantTrader