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 :

Traiter des données aberrantes (parcourir une matrice)


Sujet :

R

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Traiter des données aberrantes (parcourir une matrice)
    Bonjour tout le monde,

    Je me permets de solliciter votre aide afin de traiter un jeu de données.
    En effet, je voudrais parcourir une table (matrice) qui, dans les normes, doit contenir les valeurs 0,1,2,3,4 et remplacer toute valeur différente de celles-ci par NA.

    J'ai de la chance du moment que toutes les valeurs différentes de 0,1,2,3 et 4 sont supérieurs à 4.

    Donc en définitif, je veux faire Aussi, je ne sais pas pourquoi le code : ne marche pas ?

    Je sais que ifelse devrait marcher.

    Merci par avance.

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table<- ifelse (table[,c(3:50)]>4, NA,table[,c(3:50)])
    mais ça ne marche pas.

    Quelqu'un aurait des idées SVP?
    Je vous remercie par avance !!!

    Bonne soirée.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    mat <- matrix(-1:10, 3)
    ifelse(mat>4, NA, mat)
    #     [,1] [,2] [,3] [,4]
    #[1,]   -1    2   NA   NA
    #[2,]    0    3   NA   NA
    #[3,]    1    4   NA   NA
    c'est ce que tu souhaites?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour mamounMob,

    Je vous remercie pour votre réponse.
    Effectivement l'idée c'est bien ça. Sauf que je voudrais en effet faire une boucle for pour itérer dans la matrice. Et par la suite mettre dans la matrice l'instruction qui permet de remplacer toute valeur de la matrice qui serait différente de 0,1,2,3 et 4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    table <- matrix(nrow=1053,ncol=19) 
    for (i in 1:nrow(table)) 
    	for(j in 1:ncol(table)) 
            {Instruction}
         )
    Auriez vous des idées pour y arriver?

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par InsermU Voir le message
    ...Et par la suite mettre dans la matrice l'instruction qui permet de remplacer toute valeur de la matrice qui serait différente de 0,1,2,3 et 4.
    j'ai du mal à suivre, tu souhaites remplacer les valeurs qui ne sont pas comprises entre 0 et 4 par NA ou bien insérer une instruction ?

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    table <- matrix(nrow=1053,ncol=19) 
    for (i in 1:nrow(table)) 
    	for(j in 1:ncol(table)) 
            if(table[i,j]>4 | table[i,j]<0)
                table[i,j] = NA
    tu consommes beaucoup plus temps avec les boucles, l'écriture matricielle est conseillée, mais c'est toi qui vois.

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    En effet mamounMob, la question n'est pas encore résolue car j'ai le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in if ( table[i, j] > 4 | table[i, j] < 0)  table[i,  : 
      missing value where TRUE/FALSE needed
    Et entre temps le code fait que toutes les valeurs de ma table sont changées en NA

    J'ai essayé de rajouter la condition "else" mais le message d'erreur persiste

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2013
    Messages : 75
    Points : 191
    Points
    191
    Par défaut
    Regardes si ta matrice contient des 'NA', si c'est le cas ça va planter.
    Vérifies bien que ta matrice ne contient que des 'numeric'

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Donc c'est ça le soucis car la matrice initiale contient bien des NA....
    j'ai essayé les conditions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(table[i,j]>4 | table[i,j] != NA)
    mais ça ne donne rien...

  9. #9
    Membre confirmé
    Homme Profil pro
    MCU
    Inscrit en
    Juillet 2010
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : MCU
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2010
    Messages : 185
    Points : 486
    Points
    486
    Par défaut
    Bonjour,

    Le nom de votre objet est aussi le nom d'une fonction ce qui peut entrainer des erreurs. Essayez de donner un nom moins ambigu (p.-ex. tableau ou matrice) a votre objet et retestez.

    Sinon, est-ce que le code suivant marche?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    is.na(tableau) <- ! tableau %in% 0:4
    HTH,

    Vincent

Discussions similaires

  1. [XL-2007] inserer et traiter des données d'une douchette dans un fichier excel fermé
    Par ludovicchapo dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/04/2013, 08h44
  2. [VB6]Traiter des enregistrements recuperer par une recherche
    Par tamerlan dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/03/2006, 11h06
  3. Insérer des données Excel dans une table ACCESS
    Par anikeh dans le forum Access
    Réponses: 4
    Dernier message: 21/12/2005, 22h42
  4. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 15h11
  5. SQL - Traiter des données d'une table
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2005, 16h47

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