Bonjour,
Voici mon petit soucis. J'ai une colonne de données de températures qui se présente ainsi:
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.
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
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)):
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)).
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
Mon code est actuellement le suivant:
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.
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]) }
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!
Partager