I wrote my own ewma function to deal with the somewhat odd way that filter handles missing values. The function I wrote works as long as the NA isn't first but when it is first I still get a zero in the output. I'm not expert enough to look at filter and undeerstand what it is doing. # 1) THE FIRST CASE DOESN'T WORK # I WOULD PREFER A 1 IN THE SECOND ELEMENT OF THE OUTPUT # BECAUSE THAT IS THE INITIAL NON NA VALUE OF THE SERIES # I DON"T KNOW WHY A ZERO GETS THERE AND THAT # MAKES THE REST OF THE SERIES WRONG BECAUSE IT'S #A RECURSIVE RELATIONSHIP. BASICALLY #I PREFER THE OUTPUT TO BE THE SAME AS THE SECOND SET OF OUTPUT : # 1 NA # 2 1.00 # 3 1.50 # 4 2.25 # WITH THE NA JUST IN A DIFFERENT PLACE x<-zoo(matrix(c(NA,1,2,3),nc=1)) ewma(x,lambda=0.5) 1 NA 2 0 ( 3 1 4 2 #======================================================================================================= # 2) THIS CASE DOES WORK x<-zoo(matrix(c(1,NA,2,3),nc=1)) ewma(x,lambda=0.5) 1 1.00 2 NA 3 1.50 4 2.25 ewma<-function(x,lambda = 1, init = x[1]) { # work with 'non-zoo' data for speed and then recombine .raw <- coredata(x) good.ind <- !is.na(.raw) # determine good values .raw[good.ind] <- filter(lambda * .raw[good.ind], filter=(1-lambda), method='recursive', init=coredata(init)) zoo(.raw, index(x)) # create zoo object for return } -------------------------------------------------------- This is not an offer (or solicitation of an offer) to buy/se...{{dropped}}