2009-10-31 5 views
3

NA를 제 위치에 유지하는 어딘가의 지연이 있습니까? 데이터가 누락 될 수있는 가격 데이터의 수익을 계산하고 싶습니다. 래그 (p) - -누락 된 데이터 이상으로 지연

골 1 골 2 골 3 P 도시 가격의 지연이다 가격 데이터이고 효과적으로 놓친 104 행 99 반환하므로 계산 반환 경로 길이는 다를 것 진실. 지금 2009-11-07 5의 복귀가 가능

환호 데이브

x <- xts(c(100, 101, 97, 95, 99, NA, 104, 103, 103, 100), as.Date("2009-11-01") + 0:9) 

# fake the lag I want, with NA kept in position 
x.pos.lag <- lag.xts(x.pos) 
x.pos.lag <- lag.xts(x.pos) 
x.pos.lag['2009-11-07']=99 
x.pos.lag['2009-11-06']=NA 

cbind(x, lag.xts(x), x - lag.xts(x), x.pos.lag, x-x.pos.lag) 
      ..1 ..2 ..3 ..4 ..5 
2009-11-01 100 NA NA NA NA 
2009-11-02 101 100 1 100 1 
2009-11-03 97 101 -4 101 -4 
2009-11-04 95 97 -2 97 -2 
2009-11-05 99 95 4 95 4 
2009-11-06 NA 99 NA NA NA 
2009-11-07 104 NA NA 99 5 
2009-11-08 103 104 -1 104 -1 
2009-11-09 103 103 0 103 0 
2009-11-10 100 103 -3 103 -3 

답변

1

는 아무런 기능도 없다 - 골 4 NA 위치에 지연이 골 5 보존 새로운 차이 전시회 원래 R 위치에서 인덱스를 생성 한 다음 지연 후 값을 바꿀 수 있습니다.

x <- xts(c(100, 101, 97, 95, 99, NA, 104, 103, 103, 100), as.Date("2009-11-01") + 0:9) 
lag.xts.na <- function(x, ...) { 
    na.idx <- which(is.na(x)) 
    x2 <- lag.xts(x, ...) 
    x2[na.idx+1,] <- x2[na.idx,] 
    x2[na.idx,] <- NA 
    return(x2) 
} 

lag.xts.na(x) 
      [,1] 
2009-11-01 NA 
2009-11-02 100 
2009-11-03 101 
2009-11-04 97 
2009-11-05 95 
2009-11-06 NA 
2009-11-07 99 
2009-11-08 104 
2009-11-09 103 
2009-11-10 103 

덧붙여 말하자면 주말/공휴일 또는 그 회선을 따라 뭔가를 처리하려고합니까? 그렇다면 시리즈에서 해당 순위를 떨어 뜨리는 것이 좋습니다. 그것은 당신을 위해 모든 것을 극적으로 단순화합니다. 또는 Rmetrics의 timeSeries 패키지에는 업무 일을 처리 할 수있는 여러 가지 기능이 있습니다.