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 :

Tester une colonne entière d'un dataframe


Sujet :

R

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Physicienne Médicale
    Inscrit en
    Mai 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Physicienne Médicale

    Informations forums :
    Inscription : Mai 2019
    Messages : 32
    Points : 25
    Points
    25
    Par défaut Tester une colonne entière d'un dataframe
    Bonjour,

    Dans mon dataframe, comment faire pour tester une colonne (qui contient du numéric et/ou des NA) et renvoyer un caractère si toutes les valeurs de cette colonne contiennent des NA, et une valeur calculée si il y a au moins une valeur numérique.

    j'ai pensé utiliser une boucle if else mais je ne suis pas familière et après avoir fait plusieurs tests, j'aimerai bien que quelqu'un me dise si je suis sur la bonne voie, ou si je fais une grosse erreur, ou s'il y a plus simple...

    Voila mon code en cours : je ne mets volontairement qu'une boucle pour une colonne, pour expliquer, mais si je réalise la boucle sur les colonnes Kerma, Kerma2 et Kerma3 je dois trouver comme valeurs:

    pour la colonne Kerma : NK = valeur numérique entière, ici 30
    pour la colonne Kerma2 :NK2 = un tiret (charater)
    pour la colonne Kerma3 :NK3 = valeur entière, ici 29

    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
     
    Kerma  <-  rnorm(30,mean = 5,sd = 1.5) 		 
    Kerma2 <- rep ( "NA" , 30 )	
    Kerma3 <- c( "NA", rnorm(29, mean=6,sd=2))
    DF <- data.frame(Kerma, Kerma2, Kerma3)
     
     
    for (i in 1:n) {
      if (!is.na(DF$Kerma[i]) {
    	NK <- length(DF$Kerma)      
    		}
      Else { 
    	NK <- "-" 
    		}
    }
    Merci de vos conseils
    Matou

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Tout d'abord, "NA" est une chaine de caractères qui vaut NA et NA sans guillemet est la valeur pour signaler une valeur manquante.
    Donc :
    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
     
    # Nombre d'occurence de la chaine "NA" par colonne
     
    nb.NA <- colSums( DF == "NA")
     
    # Nombre de valeur manquantes
     
    nb.NA <- colSums( is.na( DF))
     
    # Nombre de valeurs non NA
    #  Il suffit de remplacer le test d'égalité par un test d'inégalité
     
    nb.non.NA <-  colSums( DF != "NA")
    nb.non.NA <- colSums( !is.na( DF))
     
    # Mettre en tiret a l'endroit des colonnes ne contenant que des NA
    nb.non.NA[nb.non.NA == 0] <- "-"
     
    # On pourrait aussi ecrire
    nb.NA[nb.NA == nrow( DF)] <- "-"
     
    # MAIS ATTENTION : UNE CHAINE DE CARACTERES DANS UN VECTEUR NUMERIQUES CONVERTIT TOUT LE VECTEUR EN CHAINES DE CARACTERES
    #    ALORS POURQUOI NE PAS GARDER LA VALEUR 0 DE LA PREMIERE SOLUTION ?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Physicienne Médicale
    Inscrit en
    Mai 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Physicienne Médicale

    Informations forums :
    Inscription : Mai 2019
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Merci Faubry
    Oui tu as raison, mes NA sont mal définies dans l'exemple

    A+
    Matou

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/06/2008, 13h53
  2. formule sur une colonne entière ?
    Par ANTMA dans le forum Excel
    Réponses: 6
    Dernier message: 01/12/2007, 11h31
  3. remplir une colonne entière avec la même valeur
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/11/2007, 12h24
  4. update d'une colonne entière sous bde
    Par gregcat dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/03/2007, 21h46
  5. Comment changer une proriété d'une colonne entière...
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2005, 15h09

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