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 :

l'argument n'est ni numérique, ni logique : renvoi de NA


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut l'argument n'est ni numérique, ni logique : renvoi de NA
    Bonjour,

    Je suis débutant sur R et je bute depuis plus d'une heure sur quelque chose de tout bête j'imagine...

    J'ai importé une base de donnée en csv. Ce qui m'intéresse, c'est la colonne X4.2.Age. Le problème, c'est qu'à l'intérieur, il y a des données manquantes pour 3 personnes sur passé 900. Sauf erreur, mon problème devrait venir de là.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # répertoire d'importation
    setwd("C:/R/Travail final 2.0")
     
    # importation du CSV (export excel) avec la Database totale
    Database<-read.csv("BaseData.csv",header=TRUE,sep=";",na.strings="")
     
    x=(X4.2.Age)
    plot(x, main="Âge de l'échantillon",ylab="Effectif par âge",xlab="N=982 ")
     
    text1=mean(x)
    text2=median(x)
    text(60, 140, paste(text1, "Moyenne"))
    text(60, 130, paste(text1, "Médianne"))
    Quand j'essaie de faire la moyenne ou la médiane, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning message:
    In mean.default(x) :
      l'argument n'est ni numérique, ni logique : renvoi de NA
    Même avec la fonction as.numeric ça ne passe pas.

    Quelqu'un aurait une idée ?

  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 065
    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 065
    Par défaut
    Bonjour,

    Que renvoient str(Database) et str(x) ?
    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
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    > str(x)
     Factor w/ 66 levels "11","12","13",..: 33 4 33 10 18 38 16 29 9 33 ...
    > str(Database)
    'data.frame':	984 obs. of  618 variables:

  4. #4
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 10
    Par défaut
    Bonjour,

    Je me trouve dans la même situation qu'angelbann. J'ai un tableau avec plusieurs colonnes mais elles n'ont pas toutes la même longueur et lorsque j'essaye de faire une moyenne ligne par ligne avec apply() il me renvoi le même message "l'argument n'est ni numérique, ni logique : renvoi de NA".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file$MEAN<-apply(file,1,mean,na.rm=TRUE)
    Personne n'a trouvé de solution ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Par défaut
    Un factor dans R ne sert pas à stocker des nombres mais des "catégories", de ce fait faire la moyenne n'a aucun sens.
    Il faut donc convertir ces colonnes en un type plus adapté, par exemple en numeric avec as.numeric. Par contre les fonctions read.csv ou read.table sont censées déterminer quel est le type le plus adapté automatiquement, si elles y sont pas arrivé c'est surement qu'il y a un problème dans le fichier d'entrée (mauvais séparateur de décimale, données manquantes notées d'une façon inattendue etc.). Une fois le problème identifié il faut soit modifier le fichier d'entrée, soit paramétrer correctement read.csv.

  6. #6
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 10
    Par défaut
    En fait, j'arrive très bien à manipuler mes données colonne par colonne donc le problème ne vient pas de mes fichiers de base ou de mon importation. De même en utilisant la fonction is.numeric() toutes les colonnes qui m'intéressent répondent "TRUE". Le problème ne vient pas de là, mais bien des NA.

    J'ai utilisé la nouvelle fonction cbind.na() pour fusionner mes tableaux entre eux car comme ils n'ont pas la même longueur cbind() ne fonctionnait pas, grâce à la nouvelle fonction je peux les combiner car les valeurs manquantes sont remplacées par des NA. Mais je n'arrive pas à dire à R de ne pas considérer les NA ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    > file<-(cbind.na(doc1,doc2,doc3))
    > file$EVENT<-gl(5, 1, length=nrow(file), label=c("event1","event2","event3","event4","event5"))
    > file$MEAN<-apply(file,1,mean,na.rm=TRUE)
    There were 50 or more warnings (use warnings() to see the first 50)
    > warnings()
    Messages d'avis :
    1: In mean.default(newX[, i], ...) :
      l'argument n'est ni numérique, ni logique : renvoi de NA
    2: In mean.default(newX[, i], ...) :
      l'argument n'est ni numérique, ni logique : renvoi de NA
     
     
    ...etc et ça continue 50 fois ...

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

Discussions similaires

  1. [XL-2003] Erreur "Argument n'est pas facultatif"
    Par karaveland dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/06/2011, 17h30
  2. Réponses: 15
    Dernier message: 23/01/2010, 11h04
  3. Vérifier qu'un champs est un numérique
    Par olivier94 dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2007, 21h21
  4. passer une fonction en argument, c'est possible ?
    Par kamouminator dans le forum C
    Réponses: 4
    Dernier message: 10/11/2006, 21h13
  5. Savoir si un string est un numérique
    Par Homer dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2005, 16h21

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