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 :

prop.table par ligne sur plusieurs colonnes


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut prop.table par ligne sur plusieurs colonnes
    Bonjour,
    dans un dataframe (32 colonnes, 240 lignes) je veux faire un prop.table sur chaque ligne pour les colonnes 14 à 18
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     x <- round(prop.table(dataTest1[1,14:18]),2)
    me permet de le faire sur une ligne, en l’occurrence la première. Je peux bien sûr faire une boucle sur les 240 lignes mais je soupçonne qu'il y a plus efficace. Probablement avec quelque chose de la famille des 'apply'. Si quelqu'un pouvait me mettre sur la voie...
    Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    Bonjour,
    Il suffit d'utiliser ... prop.table !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x <- round(prop.table(dataTest1[, 14:18]), 2)
    x <- round(prop.table(dataTest1[1,14:18]),2)
                                    ^^

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut
    c'est ce que j'ai tenté en premier mais ça ne marche pas. Ça me renvoie un tableau rempli de NA

  4. #4
    Membre expérimenté
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    Le problème provient donc des données. Partons d'un exemple concret :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    xxx <- matrix(seq_len(18L), nrow = 3L)
    print(xxx)
    print(prop.table(xxx[, c(3L, 5L)]))
    print(round(prop.table(xxx[, c(3L, 5L)])))
         [,1] [,2] [,3] [,4] [,5] [,6]
    [1,]    1    4    7   10   13   16
    [2,]    2    5    8   11   14   17
    [3,]    3    6    9   12   15   18
    
              [,1]      [,2]
    [1,] 0.1060606 0.1969697
    [2,] 0.1212121 0.2121212
    [3,] 0.1363636 0.2272727
    
         [,1] [,2]
    [1,]    0    0
    [2,]    0    0
    [3,]    0    0
    Donc, prop.table ne génère pas en soi des valeurs manquantes. Quelles sont les sorties de la ligne ici-bas ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 50
    Par défaut
    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
    > str(dataTest1)
    'data.frame':	239 obs. of  32 variables:
     $ ticker        : chr  "AB" "AB" "AB" "AB" ...
     $ dat           : chr  "2015-03-20" "2015-03-23" "2015-03-24" "2015-03-25" ...
     $ vol           : num  114950 118266 50923 65764 266395 ...
     $ vc1           : num  39873 5345 1625 5757 34474 ...
     $ vc2           : num  46136 16495 21443 6838 122364 ...
     $ vc3           : num  11072 31425 13791 15065 60686 ...
     $ vc4           : num  9408 26086 11540 12093 36236 ...
     $ vc5           : num  8461 38915 2524 26011 12635 ...
     $ tc1           : num  163 36 17 45 194 86 113 28 27 11 ...
     $ tc2           : num  264 85 131 40 610 466 244 119 43 35 ...
     $ tc3           : num  77 164 93 Événement sans titre86 311 613 161 224 131 96 ...
     $ tc4           : num  59 156 35 81 212 143 88 28 121 65 ...
     $ tc5           : num  49 77 20 99 78 69 65 34 11 46 ...
     $ vtc1          : num  244.6 148.5 95.6 127.9 177.7 ...
     $ vtc2          : num  175 194 164 171 201 ...
     $ vtc3          : num  144 192 148 175 195 ...
     $ vtc4          : num  159 167 330 149 171 ...
     $ vtc5          : num  173 505 126 263 162 ...
     $ propvc1       : num  0.35 0.05 0.03 0.09 0.13 0.08 0.12 0.05 0.07 0.03 ...

  6. #6
    Membre expérimenté
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Par défaut
    Citation Envoyé par yalehaire Voir le message
    [...] test1 est de type dataframe pas matrix, cela peut il avoir une incidance?
    Oui, cela est rédhibitoire, il faut travailler avec un array, matrix étant un array à deux dimensions. Ensuite, si vous faites ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    margin.table(as.matrix(c(dataTest1$vtc1, dataTest1$vtc2, dataTest1$vtc3, dataTest1$vtc4, dataTest1$vtc5), nrow = 5)), 2L)
    qu'avez-vous en sortie ?

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

Discussions similaires

  1. [DI 5.4.1] Partager équitablement n lignes sur plusieurs colonnes
    Par Elros dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 12/09/2014, 09h07
  2. Restitution champ ligne sur plusieurs colonnes
    Par mat_lefebvre dans le forum Excel
    Réponses: 2
    Dernier message: 18/09/2013, 14h56
  3. [XSL-FO] Mise en page ligne par ligne sur 2 colonnes.
    Par PouetteMan dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 26/12/2011, 18h14
  4. tri par moyenne sur plusieurs colonnes
    Par adr22 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2007, 16h19
  5. Réponses: 2
    Dernier message: 11/01/2007, 12h56

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