Bonjour,
Disposant d'une matrice je souhaiterais compter le nombre de valeurs manquantes de chacune de ces lignes. Auriez-vous une idée pour réaliser cette opération.
Merci pour votre aide
Modérateur : Groupe des modérateurs
Code : Tout sélectionner
> mat1 <- matrix(rnorm(20),4,5)
> mat1[sample(1:20,5)] <- rep(NA,5)
> mat1
[,1] [,2] [,3] [,4] [,5]
[1,] -1.0363550 1.401114 0.01107253 NA -1.558154
[2,] 0.2271171 NA -0.16066858 0.2593174 NA
[3,] 2.2526524 1.327531 NA 1.0859151 -0.765653
[4,] -0.3903473 1.363967 -1.22352124 -0.6898865 NA
> apply(mat1,1,function(x) sum(is.na(x)))
[1] 1 2 1 1
>
Il est également possible de transformer chaque ligne en caractère à l'aide de as.character puis de chercher là où as.character()=="?".
Code : Tout sélectionner
> as.character(NA)==NA
[1] NA
>
> as.character(NA)=="NA"
[1] NA
>
> as.character(NA)=="ted"
[1] NA
> as.character(NA)!="ted"
[1] NA
>
Au delà du fait que cela soit de la bidouille je pense malgré tout que ça fonctionne. Au pire je teste sur un exemple...
Code : Tout sélectionner
> ?NA
> mat1 <- matrix(rnorm(20),4,5)
> mat1[sample(1:20,5)] <- rep(NA,5)
> mat1
[,1] [,2] [,3] [,4] [,5]
[1,] 1.1978356 NA 1.6569545 NA 0.16106968
[2,] 0.6555931 NA -0.7855884 0.5373261 -0.48832422
[3,] NA 0.4754078 NA 0.2858326 -0.31234142
[4,] 0.6613260 -1.4453528 1.1601089 -1.2339359 0.08847906
> w <- NULL
> for(i in 1:nrow(mat1)){
+ k <- 0
+ for(j in 1:ncol(mat1)){
+ if(as.character(mat1[i,j])=="NA")
+ k <- k+1
+ }
+ w <- c(w,k)
+ }
Erreur dans if (as.character(mat1[i, j]) == "NA") k <- k + 1 :
valeur manquante là où TRUE / FALSE est requis
> print(w)
NULL
> apply(mat1,1,function(x) sum(is.na(x)))
[1] 2 1 2 0
>
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité