J'ai un capteur qui mesure une variable et quand il n'y a pas de connexion, il retourne toujours la dernière valeur vue au lieu de NA
. Donc dans mon vecteur je voudrais remplacer ces valeurs identiques par une valeur imptuée (par exemple avec na.approx
).Remplacer la séquence de valeurs identiques de longueur> 2
set.seed(3)
vec <- round(runif(20)*10)
#### [1] 2 8 4 3 6 6 1 3 6 6 5 5 5 6 9 8 1 7 9 3
Mais je ne veux que les séquences supérieures à 2 (3 nombres identiques ou plus) car 2 nombres identiques peuvent apparaître naturellement. (Dans l'exemple précédent, la séquence tag serait 5 5 5
)
J'ai essayé de le faire avec diff
pour marquer mes points identiques (c(0, diff(vec) == 0)
) mais je ne sais pas comment faire face à la condition length == 2
...
EDIT ma sortie attendue pourrait ressembler à ceci:
#### [1] 2 8 4 3 6 6 1 3 6 6 5 NA NA 6 9 8 1 7 9 3
(La deuxième valeur identique d'une séquence de 3 ou plus est très probablement une mauvaise valeur trop)
Merci
cool. Est-il possible de remplacer également NA à partir de la deuxième 5 pas la troisième? (J'ai mis à jour ma sortie attendue) – agenis
oui ce serait une étape supplémentaire 'vec [qui (is.na (vec)) - 1] <- NA' –
ok, je pourrais aller avec ça, même si ça gâcherait avec" les "NA" naturels ... initialement présents dans le vecteur (cela peut arriver). Je devrais les imputer en premier. – agenis