Com a restrição de que não funcionará se você tiver dois NA em sequência direta (que com o exemplo que você coloca, acontece quatro vezes), você pode usar a função na2mean do pacote fast.
HTH 2016-04-22 15:55 GMT-03:00 Leonardo Ferreira Fontenelle < [email protected]>: > Além das situações que já foram levantadas, parece-me que o sapply() vai > fornecer um valor de cada vez para a função, e ela precisa de receber o > vetor inteiro. Além disso, provavelmente dá para reescrever a função sem > o for(), mas não tenho nem o R, nem um teclado de verdade ao alcance no > momento. > > Leonardo Ferreira Fontenelle > http://lattes.cnpq.br/9234772336296638 > > Em Qui 14 abr. 2016, às 16:40, Felipe escreveu: > > Prezados, > > > > Estou precisando calcular a média entre dois valore quando NA, ou seja,, > > quando tenho, por exemplo, um NA na posição 10 de um vetor, quero > > substituir > > o NA pela média dos valores das posições 9 e 10, mean(c(x[i-1],x[i+1]). > > > > Tentei usar ifelse(), mas não funcionou: > > > > #### > > set.seed(9999) > > x <- rnorm(500,10,5) > > y <- sample(1:500,50,replace=FALSE) > > x[y] <- NA > > > > media <- function(x) > > { > > for (i in 2:length(x)) > > { > > x[i] <- ifelse(is.na(x[i]),mean(c(x[i-1],x[i+1])),x[i]) > > > > } > > } > > sapply(x, media) > > > > _______________________________________________ > > R-br mailing list > > [email protected] > > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea > cdigo > > mnimo reproduzvel. > _______________________________________________ > R-br mailing list > [email protected] > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e fornea cdigo > mnimo reproduzvel. >
_______________________________________________ R-br mailing list [email protected] https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
