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 :

Suppression de "NA" après un merge


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Suppression de "NA" après un merge
    Bonjour,

    je découvre la puissance de R pour faire des statistiques et en tant que débutant je bloque sur un problème.

    J'ai deux fichiers CSV (comptage routier) que j'importe avec read.csv.
    Mes tables ont ce format :
    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
     
    comptage22 :
    	V1	V2
    1	8	28
    2	9	32
    [...]
    84	91	0
    85	92	1
     
    comptage29 :
    	V1	V2
    1	8	33
    2	9	62
    [...]
    95	102	1
    96	103	1
    V1 étant la vitesse ; V2 le nombre d'enregistrement de V1.

    Je fais une fusion des deux par la fonction merge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    hist <- merge(comptage22,comptage29, all=TRUE, by="V1")
    j'obtiens logiquement des NA dans mon V2.x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	V1	V2.x	V2.y
    1	8	28	33
    2	9	32	62
    [...]
    95	102	NA	1
    96	103	NA	1
    Problème est que si j'additione V2.x et V2.y je me retrouve avec les NA. En sachant que les NA sont en réalité des 0, j'essaye cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    hist$V2.x[hist$V2.x==NA]<-0
    Mais cela ne change rien.

    Où se trouve l'erreur ?

    Merci.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 063
    Par défaut
    Bonjour,

    Pour le remplacement des NA par 0, il vaut mieux passer par la fonction is.na() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hist$V2.x[is.na(hist$V2.x)] <- 0
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre Expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Par défaut
    Bonjour,

    Ou bien un peu plus compliqué mais sans toucher aux données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > tmp <- data.frame(V1=sample(1:10, 3), V2.x=c(1, NA, 1), V2.y=c(2, 3, 4))
    > tmp
      V1 V2.x V2.y
    1 10    1    2
    2  3   NA    3
    3  1    1    4
    
    > apply(tmp[ , c("V2.x", "V2.y")], 1, sum, na.rm=TRUE)
    [1] 3 3 5

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ced Voir le message
    Bonjour,

    Pour le remplacement des NA par 0, il vaut mieux passer par la fonction is.na() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hist$V2.x[is.na(hist$V2.x)] <- 0
    C'est parfait merci.

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

Discussions similaires

  1. Suppression d'un simple quote
    Par Franck2mars dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/01/2007, 10h33

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