Bonjour,
Voici mon petit soucis. J'ai une colonne de données de températures qui se présente ainsi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
6.43
6.18
15.93
15.93
15.93
15.68
7.68
15.93
15.68
15.68 
7.9
7.9
Je souhaiterais supprimer dans cet exemple les températures en gras (les 15.93 et 15.68°C) tout en gardant les autres, car je les ai détectées comme fausses dans ma série.

J'ai pour l'instant une ligne de code insérée dans une boucle qui me supprime uniquement la première valeur fausse mais pas les suivantes (en gras ci-dessous (mêmes données qu'au-dessus)):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
6.43
6.18
15.93
15.93
15.93
15.68
7.68
15.93
15.68
15.68 
7.9
7.9
Ce que j'aimerais, comme vous l'avez compris, c'est qu'il me supprime également les valeurs fausses qui suivent (tous les 15.93 et 15.68°C dans cet exemple, mais aussi les autres températures se présentant ainsi dans mes données (valeur fausse détectée qui se répète)).
Mon code est actuellement le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
out2NA <- function(x,maxi,seuil){
    #difx <- c(0,diff(x))  
    st1 <- NULL     
    st1 <- ifelse (abs(x)>maxi, NA,x)
    for (i in 2:length(x)){
    st1[i] <- ifelse ((abs(x[i])>=abs(x[i-1])+seuil)&&(abs(x[i])>=abs(x[i+1])-0.6),NA,x[i])    
    }
Avec en gras la double condition qui me supprime actuellement la première valeur fausse mais pas les suivantes lorsqu'il y en a plusieurs à la suite.
J'aimerais donc savoir comment faire sous R pour lui dire que lorsque pour un x[i] donné, si ma double condition en gras est vérifiée, qu'il remplace x[i] par NA (comme il le fait déjà), mais également les suivantes si l'écart entre la première valeur fausse x[i] et les suivantes est inférieur à 0.5°C par exemple?

Merci pour votre aide et vos idées!