IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Valeurs manquantes dans un tableau


Sujet :

R

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Valeurs manquantes dans un tableau
    Bonjour,

    J'ai une matrice, disons X, qui contient des valeurs manquantes sur plusieurs colonnes, je souhaite supprimer les colonnes qui ne contiennent que des valeurs manquantes (et donc garder celles qui peuvent eventuellement en contenir quelques unes mais qui ont aussi des données).

    J'arrive a créer un vecteur boleen. Imaginons que seule la 2eme colonne de X contienne uniquement des valeurs manquantes sur 4 colonnes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    zz <- is.na(colMeans(X, na.rm=T) )
    ce qui me donne (FALSE, TRUE, FALSE, FALSE), comment faire ensuite pour lui dire de ne garder que les colonnes 1, 3 et 4 de X??

    merci pour votre aide.

    nicolas

  2. #2
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Points : 164
    Points
    164
    Par défaut
    Salut,
    Si c'est une matrice tu peut faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    set.seed(111)
    Data <- matrix(c(runif(10,2,5),rep(NA,10),runif(5),NA,NA,runif(3),NA,rnorm(9),rep(NA,10)),10,5)
     
    R> Data
           [,1] [,2]    [,3]     [,4] [,5]
     [1,] 3.779   NA 0.55578       NA   NA
     [2,] 4.179   NA 0.59023 -0.49396   NA
     [3,] 3.111   NA 0.06714 -0.17367   NA
     [4,] 3.545   NA 0.04755 -0.40660   NA
     [5,] 3.133   NA 0.15620  1.84564   NA
     [6,] 3.255   NA      NA  0.39405   NA
     [7,] 2.032   NA      NA  0.79753   NA
     [8,] 3.597   NA 0.44643 -1.56667   NA
     [9,] 3.296   NA 0.17144 -0.08585   NA
    [10,] 2.281   NA 0.96653 -0.35914   NA
     
    choixcol <- function(x) any(is.na(x) == FALSE)
    # si tu veux choisir les bonnes colonnes
     
    R> Data[,apply(Data,2,choixcol)]
           [,1]    [,2]     [,3]
     [1,] 3.779 0.55578       NA
     [2,] 4.179 0.59023 -0.49396
     [3,] 3.111 0.06714 -0.17367
     [4,] 3.545 0.04755 -0.40660
     [5,] 3.133 0.15620  1.84564
     [6,] 3.255      NA  0.39405
     [7,] 2.032      NA  0.79753
     [8,] 3.597 0.44643 -1.56667
     [9,] 3.296 0.17144 -0.08585
    [10,] 2.281 0.96653 -0.35914
     
     
    # au cas ou c'est un data frame ce qui est mieux si tu veux
    # le nom des colonnes
     
    Data <- as.data.frame(Data)
    # et pour choisir tu fait
     
    R> Data[sapply(Data,choixcol)]
          V1      V3       V4
    1  3.779 0.55578       NA
    2  4.179 0.59023 -0.49396
    3  3.111 0.06714 -0.17367
    4  3.545 0.04755 -0.40660
    5  3.133 0.15620  1.84564
    6  3.255      NA  0.39405
    7  2.032      NA  0.79753
    8  3.597 0.44643 -1.56667
    9  3.296 0.17144 -0.08585
    10 2.281 0.96653 -0.35914
    # ou Data[,!sapply(Data,choixcol)]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Rapide efficace précis... merci a toi

    C'est tout a fait ce que je voulais

    Citation Envoyé par dickoa Voir le message
    Salut,
    Si c'est une matrice tu peut faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    set.seed(111)
    Data <- matrix(c(runif(10,2,5),rep(NA,10),runif(5),NA,NA,runif(3),NA,rnorm(9),rep(NA,10)),10,5)
     
    R> Data
           [,1] [,2]    [,3]     [,4] [,5]
     [1,] 3.779   NA 0.55578       NA   NA
     [2,] 4.179   NA 0.59023 -0.49396   NA
     [3,] 3.111   NA 0.06714 -0.17367   NA
     [4,] 3.545   NA 0.04755 -0.40660   NA
     [5,] 3.133   NA 0.15620  1.84564   NA
     [6,] 3.255   NA      NA  0.39405   NA
     [7,] 2.032   NA      NA  0.79753   NA
     [8,] 3.597   NA 0.44643 -1.56667   NA
     [9,] 3.296   NA 0.17144 -0.08585   NA
    [10,] 2.281   NA 0.96653 -0.35914   NA
     
    choixcol <- function(x) any(is.na(x) == FALSE)
    # si tu veux choisir les bonnes colonnes
     
    R> Data[,apply(Data,2,choixcol)]
           [,1]    [,2]     [,3]
     [1,] 3.779 0.55578       NA
     [2,] 4.179 0.59023 -0.49396
     [3,] 3.111 0.06714 -0.17367
     [4,] 3.545 0.04755 -0.40660
     [5,] 3.133 0.15620  1.84564
     [6,] 3.255      NA  0.39405
     [7,] 2.032      NA  0.79753
     [8,] 3.597 0.44643 -1.56667
     [9,] 3.296 0.17144 -0.08585
    [10,] 2.281 0.96653 -0.35914
     
     
    # au cas ou c'est un data frame ce qui est mieux si tu veux
    # le nom des colonnes
     
    Data <- as.data.frame(Data)
    # et pour choisir tu fait
     
    R> Data[sapply(Data,choixcol)]
          V1      V3       V4
    1  3.779 0.55578       NA
    2  4.179 0.59023 -0.49396
    3  3.111 0.06714 -0.17367
    4  3.545 0.04755 -0.40660
    5  3.133 0.15620  1.84564
    6  3.255      NA  0.39405
    7  2.032      NA  0.79753
    8  3.597 0.44643 -1.56667
    9  3.296 0.17144 -0.08585
    10 2.281 0.96653 -0.35914
    # ou Data[,!sapply(Data,choixcol)]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/04/2007, 21h57
  2. Réponses: 3
    Dernier message: 01/03/2007, 16h26
  3. [Tableaux] Valeur unique dans un tableau
    Par glsn dans le forum Langage
    Réponses: 6
    Dernier message: 06/12/2006, 11h18
  4. recherche de valeur identique dans un tableau
    Par jean tof dans le forum Langage
    Réponses: 9
    Dernier message: 20/06/2006, 13h33
  5. 2 valeurs distincts dans un tableau à 2 dimensions...
    Par toyyo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/08/2005, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo