В 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 имеет ряд функций для работы с рабочими днями.