2013-05-15 6 views
1

Comment remplir les valeurs NA avec la répétition de la valeur non NA la plus à gauche dans zoo?Remplissage des valeurs NA avec répétition de la valeur non NA la plus à gauche dans le zoo

Dans le guide du zoo pdf nous avons la fonction na.fill qui effectue cette tâche. Ma question est de savoir comment dire la fonction pour prendre la valeur non-NA la plus à gauche?

Ci-dessous un petit exemple

> z <- zoo(c(NA, 2, NA, 1, 4, 5, 2, NA)) 
> z 
1 2 3 4 5 6 7 8 
NA 2 NA 1 4 5 2 NA 
> na.fill(z, "extend") 
    1 2 3 4 5 6 7 8 
2.0 2.0 1.5 1.0 4.0 5.0 2.0 2.0 
> na.fill(z, c("extend", NA)) 
1 2 3 4 5 6 7 8 
2 2 NA 1 4 5 2 2 

Le résultat que je veux est la suivante:

1 2 3 4 5 6 7 8 
NA 2 2 1 4 5 2 2 

Répondre

2
library(zoo) 
z <- zoo(c(NA, 2, NA, 1, 4, 5, 2, NA)) 
na.locf(z, na.rm = FALSE) 
# 1 2 3 4 5 6 7 8 
#NA 2 2 1 4 5 2 2 
+0

FWIW, si vous ne disposez pas d'un objet 'zoo', vous pouvez faire des tours comme 'rle (is.na (myvector))' et crunch l'info qui en résulte. –

+0

@CarlWitthoft: vous pouvez utiliser 'na.locf' sur un simple vecteur. zoo fournit une méthode 'na.locf.default'. –

+0

@JoshuaUlrich Merci pour l'info. J'ai besoin d'en savoir plus sur 'zoo'. –

Questions connexes