Modérateur : Groupe des modérateurs
Code : Tout sélectionner
x[!is.na(x)]
Code : Tout sélectionner
# on prépare notre vecteur pour l'exemple
> vec <- rnorm(12)
> vec[c(2,5,6)] <- rep(NA,3)
> vec
[1] -0.38055 NA -2.84658 -0.55528 NA NA 0.45146 -0.18322
[9] -0.49962 2.45838 0.05215 -0.39455
# première proposition :
# on utilise 'is.na'
> vec[!is.na(vec)]
[1] -0.38055 -2.84658 -0.55528 0.45146 -0.18322 -0.49962 2.45838 0.05215
[9] -0.39455
# seconde proposition:
# on localiser les valeurs égale à NA avec 'which' et 'is.na'
> which(is.na(vec))
[1] 2 5 6
> vec[-which(is.na(vec))]
[1] 1.7321 1.0738 1.3466 -0.1239 -0.5337 -0.6548 0.9852 1.1466 0.2191
# troisième proposition:
# la fonction qui fait tout (sauf le café et la vaisselle) :
> na.omit(vec)
[1] 1.7321 1.0738 1.3466 -0.1239 -0.5337 -0.6548 0.9852 1.1466 0.2191
attr(,"na.action")
[1] 2 5 6
attr(,"class")
[1] "omit"
# quatrième proposition:
> ?NA
Code : Tout sélectionner
> matricetest
V V2 V3 V4 V5
1 A 5 8 9 0.1
2 B 4 7 10 0.5
3 A 5 8 10 0.3
4 B 5 7 10 0.4
5 A 4 7 9 0.0
> matricetest[-which(is.na(matricetest))]
NULL data frame with 5 rows
> matricetest[1,1] <- NA
> matricetest
V V2 V3 V4 V5
1 <NA> 5 8 9 0.1
2 B 4 7 10 0.5
3 A 5 8 10 0.3
4 B 5 7 10 0.4
5 A 4 7 9 0.0
> matricetest[-which(is.na(matricetest))]
V2 V3 V4 V5
1 5 8 9 0.1
2 4 7 10 0.5
3 5 8 10 0.3
4 5 7 10 0.4
5 4 7 9 0.0
Code : Tout sélectionner
> vect8 <- which(matricetest[,3] == 8)
> vect8
[1] 1 3
> matricetest[-vect8,]
V V2 V3 V4 V5
2 B 4 7 10 0.5
4 B 5 7 10 0.4
5 A 4 7 9 0.0
Code : Tout sélectionner
> vect9 <- which(matricetest[,3] == 9)
> vect9
integer(0)
> matricetest[-vect9,]
[1] V V2 V3 V4 V5
<0 rows> (or 0-length row.names)
Code : Tout sélectionner
if (length(vect9)>0){
matricetest <- matricetest[-vect9,]
}
Code : Tout sélectionner
x
V V2 V3 V4 V5
1 A 5 8 9 0.1
2 B 4 7 10 0.5
3 A 5 8 10 0.3
4 B 5 7 10 0.4
5 A 4 7 9 0.0
x[apply(x,1,function(x) !any(is.na(x))),]
V V2 V3 V4 V5
1 A 5 8 9 0.1
2 B 4 7 10 0.5
3 A 5 8 10 0.3
4 B 5 7 10 0.4
5 A 4 7 9 0.0
Logez Maxime a écrit :Bonjour,
Il ne semble pas très opportun de modifier des topics archivés. Peut-être aurais-tu du ouvrir un nouveau topic.
De part la syntaxe utilisée ici pour virer les NA il n'est pas pertinent de l'appliquer quand il n'y a pas de NA dans le tableau.
Code : Tout sélectionner
Temp Ozone
1 67 41
2 72 36
3 74 12
4 62 18
5 56 NA
6 66 28
7 65 23
8 59 19
9 61 8
...
150 77 NA
151 75 14
152 76 18
153 68 20
Code : Tout sélectionner
for(i in 1:153) {(is.na.data.frame(A[i,]))==TRUE) A[-i,]}
Erreur : symbole inattendu(e) dans "for(i in 1:153) {(is.na.data.frame(A[i,])==TRUE) A"
Code : Tout sélectionner
A=data.frame(Temp,Ozone)
Code : Tout sélectionner
?na.omit
Retourner vers « Archives : Manipulation de données avec R »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité