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 :

calcul d'un pourcentage avec un NA


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Octobre 2020
    Messages : 9
    Par défaut calcul d'un pourcentage avec un NA
    Bonjour,

    Je n'arrive pas à calculer mes pourcentages :

    id population
    a1 50
    a2 110
    a3 72
    a4 41
    a5 NA
    a6 80

    je souhaite obtenir une colonne qui calcule le poids de la population

    soit :

    id population pourcentage
    a1 50 14%
    a2 110 31%
    a3 72 20%
    a4 41 12%
    a5 NA NA
    a6 80 23%

    avec pourcentage = population/sum(population).

    Merci

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Calcul d'un pourcentage avec un NA
    Bonjour,

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    df1 <- read.table(header = TRUE, text = "
    id population
    a1 50
    a2 110
    a3 72
    a4 41
    a5 NA
    a6 80
    ")
     
    df1$pourcentage <- round(df1$population / sum(df1$population, na.rm=TRUE), 2) * 100
    df1
    #>   id population pourcentage
    #> 1 a1         50          14
    #> 2 a2        110          31
    #> 3 a3         72          20
    #> 4 a4         41          12
    #> 5 a5         NA          NA
    #> 6 a6         80          23
     
    df1$pourcentage <- formattable::percent(df1$pourcentage/100, 0)
    df1
    #>   id population pourcentage
    #> 1 a1         50         14%
    #> 2 a2        110         31%
    #> 3 a3         72         20%
    #> 4 a4         41         12%
    #> 5 a5         NA          NA
    #> 6 a6         80         23%
     
    # ou directement
    df1$pourcentage <- formattable::percent(round(df1$population / sum(df1$population,na.rm=TRUE),2), 0)
    df1
    #>   id population pourcentage
    #> 1 a1         50         14%
    #> 2 a2        110         31%
    #> 3 a3         72         20%
    #> 4 a4         41         12%
    #> 5 a5         NA          NA
    #> 6 a6         80         23%
     
    # Created on 2020-10-09 by the reprex package (v0.3.0.9001)
    Attention toutefois à l'interprétation de ce pourcentage.

    Cordialement,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2014, 12h23
  2. Calculer un pourcentage avec sous-requêtes
    Par nadsky dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 30/10/2008, 14h55
  3. Pourcentage avec deux chiffres après la virgule
    Par Oluha dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/03/2005, 13h47
  4. Calcul d'un total avec Rave Report
    Par webbulls dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/05/2004, 13h46

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