R отставание по отсутствующим данным - PullRequest
3 голосов
/ 01 ноября 2009

Есть ли где-нибудь вариант отставания, который удерживает НС в положении? Я хочу вычислить возврат данных о ценах, если данные могут отсутствовать.

Col 1 - данные о ценах Col 2 - отставание цены Столбец 3 показывает p - lag (p) - результат от 99 до 104 фактически пропущен, поэтому длина пути вычисленных значений будет отличаться от истинной. Col 4 показывает отставание с сохранением положения NA Кол 5 показывает новую разницу - теперь доступно возвращение 5 за 2009-11-07

Ура, Дейв

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 Ответ

1 голос
/ 01 ноября 2009

В R нет функций, которые бы делали это изначально, но вы можете создать индекс исходных позиций NA и затем поменять значения там после лага.

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

Кстати, вы просто пытаетесь справиться с выходными / праздничными днями или чем-то в этом роде? Если это так, вы можете отказаться от этих позиций из вашей серии; это значительно упростит вам вещи. Кроме того, пакет timeSeries в Rmetrics имеет ряд функций для работы с рабочими днями.

...