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 :

Compter nombre de valeurs différentes


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2018
    Messages : 27
    Points : 15
    Points
    15
    Par défaut Compter nombre de valeurs différentes
    Bonjour à tous,

    Je suis à la recherche de deux choses
    - (1) d'une méthode rapide pour compter le nombre de valeurs différentes apparaissant dans une colonne;
    - (2) d'un résumé synthétique de tableau.

    (1) J'ai un tableau de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    col A | col B |
    A     | 1     |
    A     | 1     |
    C     | 1     |
    D     | 2     |
    Je voudrais savoir combien de valeurs différentes il y a dans la col A (ici 3), et combien de valeurs différentes apparaissent dans la col B (ici, 2).

    (2) Aussi, lorsque plusieurs valeurs réapparaissent, est-il possible de récupérer une table qui synthétise les infos, comme dans l'exemple ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    col A | col B | col C |
    A     | 1     | 3     |
    A     | 1     | 5     |
    C     | 1     | 7     |
    D     | 2     | 1     |
    je souhaite obtenir une table "synthétique" qui somme par exemple les valeurs numériques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    col A | col B | col C |
    A     | 2     | 8     |
    C     | 1     | 7     |
    D     | 2     | 1     |
    Merci à tous pour votre aide.
    Je cherche en vain depuis plusieurs heures...

    G.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    Je voudrais savoir combien de valeurs différentes il y a dans la col A (ici 3), et combien de valeurs différentes apparaissent dans la col B (ici, 2).
    Plusieurs possibilités dont une avec le package dplyr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # le data.frame des données s'appelle tab dans mon exemple
    tab
       col.A col.B
    1 A          1
    2 A          1
    3 C          1
    4 D          2
    sapply(tab, function(x) sum(!duplicated(x)))
    # dplyr
    tab %>% summarise_all(funs(n_distinct))
    # en combinant les deux :
    sapply(tab, n_distinct)
    Si j'ai bien compris pour la (2) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tab %>% group_by(col.A) %>% summarise_all(funs(sum))
    # ou 
    tab %>% group_by(col.A) %>% summarise_if(is.numeric, sum)
    # ou
    aggregate(. ~ col.A, tab, sum)
    cdlt

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2017
    Messages : 34
    Points : 42
    Points
    42
    Par défaut
    Pour la première question j'utilise en général la procédure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length(unique(df$colonne))
    Prog_R

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2018
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Merci pour la réponse.
    Mais je ne comprends pas à quoi correspondent les "x" dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sapply(tab, function(x) sum(!duplicated(x)))

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    sapply est une fonction qui applique une fonction aux différents éléments d'une liste, vecteur.

    Dans ton cas sapply permet d'appliquer une fonction a chaque colonne de ton tableau. Quand tu fais sapply(tab, function(x) ...) le x va être chacune des colonnes de ton tableau. C'est équivalent à avoir fait une boucle sur les colonnes de tab.

    Cdlt

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2018
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par prog_R Voir le message
    Pour la première question j'utilise en général la procédure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    length(unique(df$colonne))
    Prog_R
    Mercci prog_R, c'est exactement ce que je cherchais pour le (1) !

    Citation Envoyé par tototode Voir le message
    sapply est une fonction qui applique une fonction aux différents éléments d'une liste, vecteur.

    Dans ton cas sapply permet d'appliquer une fonction a chaque colonne de ton tableau. Quand tu fais sapply(tab, function(x) ...) le x va être chacune des colonnes de ton tableau. C'est équivalent à avoir fait une boucle sur les colonnes de tab.

    Cdlt
    OK, merci pour ce rapide retour. Je teste et reviens pour dire si j'ai réussi.

    Citation Envoyé par tototode Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tab %>% group_by(col.A) %>% summarise_if(is.numeric, sum)
    cdlt
    Juste un mot pour dire que cette méthode a fait exactement ce que je voulais !!
    Merci beaucoup tototode !!!

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

Discussions similaires

  1. [XL-2007] Compter le nombre de valeurs différente dans une colonne
    Par Mist-e-Fire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/04/2013, 09h01
  2. [XL-2010] Compter le nombre de valeurs différentes
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/12/2012, 21h58
  3. Réponses: 1
    Dernier message: 22/05/2012, 19h15
  4. Comment compter le nombre de valeur différentes
    Par chelmi95 dans le forum IHM
    Réponses: 3
    Dernier message: 02/05/2008, 18h02
  5. Compter le nombre de valeurs différentes
    Par solorac dans le forum Excel
    Réponses: 6
    Dernier message: 21/04/2007, 16h13

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