Résolu : Somme en fonction d'arguments multiples dans plusieurs colonnes

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

David Josse
Messages : 6
Enregistré le : 18 Mai 2019, 05:58

Résolu : Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar David Josse » 27 Mai 2019, 09:58

Bonjour,

Je suis débutant sur r (soyez indulgents) et encore pas très à l'aise avec la syntaxe. J'ai un dataframe de cette forme :

Code : Tout sélectionner

VOLUME4 DESTINATION4 VOLUME3 DESTINATION3 VOLUME2 DESTINATION2
1      0.000         <NA>   0.000         <NA>   7.499      SCIERIE
2      0.000         <NA>   0.000         <NA>   3.695      SCIERIE
3      0.000         <NA>   0.000         <NA>   2.863      SCIERIE
4      0.000         <NA>   0.000         <NA>  12.063       EXPORT
5      0.000         <NA>   0.000         <NA>   0.000         <NA>
6      0.000         <NA>   0.000         <NA>   0.000         <NA>
7      0.000         <NA>   0.000         <NA>   6.569      SCIERIE
8      0.000         <NA>   0.000         <NA>   8.384      SCIERIE
9      0.000         <NA>   0.000         <NA>   4.536      SCIERIE
10     0.000         <NA>   0.000         <NA>   6.858       EXPORT


J'aimerais créer un vecteur qui fait pour chaque lignes la somme des volumes (VOLUME4,VOLUME3,etc) seulement si la destination associée (DESTINATION4,DESTINATION3,etc) est SCIERIE par exemple ?

Merci d'avance,

David.

Jérémie Rondel
Messages : 2
Enregistré le : 28 Mai 2019, 12:42

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar Jérémie Rondel » 28 Mai 2019, 12:50

Bonjour,

J'aurais fait ainsi :

base %>%
mutate(somme_vol = ifelse(DESTINATION2 == "SCIERIE",
VOLUME3 + VOLUME2 + VOLUME4,
"")) %>%
select(somme_vol) %>%
c()

Vous pouvez vous arrêter avant le select si vous voulez garder tout le tableau.

David Josse
Messages : 6
Enregistré le : 18 Mai 2019, 05:58

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar David Josse » 29 Mai 2019, 08:11

Bonjour,

Merci de ta réponse, j'ai pris le temps de regarder une peu les fonctions que tu utilise mutate() a déjà allégée une bonne partie de mes scripts.

Ta solution fonctionne mais elle ne donne pas exactement le résultat souhaité, en fait j'ai des grumes de bois découpées en maximum 5 billons qui ont chacun une destination (SCIERIE ou EXPORT) et un volume associé, j'aimerais que somme_vol dans chaque ligne la somme de tous les volumes associé à un des deux critères.

J'ai quand même progressé j'ai réussis à faire fonctionner le script ci-dessous mais il ne prend pas en compte les volumes en cas d'alternances des destinations :

Code : Tout sélectionner

> data <- data6 %>%
+     
+     mutate(somme_vol = case_when(
+         DESTINATION5 == "SCIERIE" & DESTINATION4 == "SCIERIE" & DESTINATION3 == "SCIERIE" & DESTINATION2 == "SCIERIE" ~          VOLUME5+VOLUME4+VOLUME3+VOLUME2,
+         DESTINATION4 == "SCIERIE" & DESTINATION3 == "SCIERIE" & DESTINATION2 == "SCIERIE" ~ VOLUME4+VOLUME3+VOLUME2,
+         DESTINATION3 == "SCIERIE" & DESTINATION2 == "SCIERIE" ~ VOLUME3+VOLUME2,
+         DESTINATION2 == "SCIERIE" ~ VOLUME2,
+         TRUE ~ 0
+         
+     ))


J'ai essayé le script ci-dessous afin de résoudre ce problème mais il me renvoie des NA comme seul résultat, je pense que l'erreur viens de la référence au somme_vol calculé précédemment :

Code : Tout sélectionner

data <- data6 %>%
   
      mutate(somme_vol = ifelse(DESTINATION2 == "SCIERIE",
      VOLUME2,0)) %>%

      mutate(somme_vol = ifelse(DESTINATION3 == "SCIERIE",
      VOLUME3+somme_vol,somme_vol)) %>%

      mutate(somme_vol = ifelse(DESTINATION4 == "SCIERIE",
      VOLUME4+somme_vol,somme_vol)) %>%

      mutate(somme_vol = ifelse(DESTINATION5 == "SCIERIE",
      VOLUME5+somme_vol,somme_vol))


Par curiosité j'ai pas compris à quoi sert le c() à la fin de ta solution ?

Cordialement,
David.

Jérémie Rondel
Messages : 2
Enregistré le : 28 Mai 2019, 12:42

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar Jérémie Rondel » 29 Mai 2019, 08:25

J'ai pas tout à fait compris ce que tu cherchais à faire, mais si tu as des NA c'est parce que :
NA + 5 + NA +10 + 12 = NA

Pour palier à ça, je fais cette manip pour remplacer l'addition :

base %>%
mutate(la_somme = rowSums(cbind(.$a , .$b , .$c , na.rm = T)

La fonction c() c'est pour transformer la colonne du DF en vecteur. Mais apparemment ce n'est pas ce que tu voulais.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar Mickael Canouil » 29 Mai 2019, 08:35

Bonjour,

voici une proposition:

Code : Tout sélectionner

.data <- read.table(stringsAsFactors = FALSE, header = TRUE,
text = "VOLUME4 DESTINATION4 VOLUME3 DESTINATION3 VOLUME2 DESTINATION2
1      0.000         <NA>   0.000         <NA>   7.499      SCIERIE
2      0.000         <NA>   0.000         <NA>   3.695      SCIERIE
3      0.000         <NA>   0.000         <NA>   2.863      SCIERIE
4      0.000         <NA>   0.000         <NA>  12.063       EXPORT
5      0.000         <NA>   0.000         <NA>   0.000         <NA>
6      0.000         <NA>   0.000         <NA>   0.000         <NA>
7      0.000         <NA>   0.000         <NA>   6.569      SCIERIE
8      0.000         <NA>   0.000         <NA>   8.384      SCIERIE
9      0.000         <NA>   0.000         <NA>   4.536      SCIERIE
10     0.000         <NA>   0.000         <NA>   6.858       EXPORT")


Code : Tout sélectionner

library(tidyverse)

.data %>%
  mutate(ID = seq(n())) %>%
  gather(key = variable, value = value, -ID) %>%
  mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  ) %>%
  spread(key = variable, value = value) %>%
  mutate(VOLUME = as.numeric(VOLUME)) %>%
  group_by(ID) %>%
  filter(DESTINATION == "SCIERIE") %>%
  summarise(
    total_volume = sum(VOLUME, na.rm = TRUE)
  )
#> # A tibble: 6 x 2
#>      ID total_volume
#>   <int>        <dbl>
#> 1     1         7.50
#> 2     2         3.70
#> 3     3         2.86
#> 4     7         6.57
#> 5     8         8.38
#> 6     9         4.54


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar Serge Rapenne » 29 Mai 2019, 09:01

@Mickael : bien joué, j'avais (un peu , je n'ai pas trop le temps en ce moment) cherché qq chose dans ce sens mais je n'avais pas pensé à ajouter un champ ID.

Serge

David Josse
Messages : 6
Enregistré le : 18 Mai 2019, 05:58

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar David Josse » 29 Mai 2019, 14:57

Merci pour vos réponse !

@ Jérémie :

Normalement l'addition de devrait pas poser de problème j'ai déjà remplacé tous les NA's dans les colonnes comportant les volumes et class() me les renvoies toutes comme numérique or la formule me renvoie systématiquement uniquement des NA's pour tous les résultats (même les lignes où tous les volumes sont différents de 0).

Je n'ai pas pu encore essayé de remplacer l'addition j'ai lancé le téléchargement du package tidyverse (je suis en stage à l'étranger avec une connexion vraiment très faible) ma session r va surement tourner toute l'après midi pour finir le chargement.

@ Mickael :

Comme expliqué à Jérémie ma connexion internet est très faible le téléchargement du package tidyverse va me prendre au moins l'après-midi, cependant je peux déjà te dire que je ne comprend pas toutes les subtilité de ta solution (qui doit surement marcher). J'essaie de toute façons de bien comprendre comment ça marche ça m'évitera de reposer deux fois la même questions sur ce forum.

Code : Tout sélectionner

.data %>%
  mutate(ID = seq(n())) %>%
# Ici on associe un identifiant unique à chaque ligne du tableaux, à quoi sert le seq(n()) ?

  gather(key = variable, value = value, -ID) %>%
#On met toutes les variables dans une seul colonne sauf ID ?

  mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  ) %>%
#Cette étape je comprend pas vraiment et comme je vois spread() après je me doute que ça doit être la que ça se passe ?

  spread(key = variable, value = value) %>%
#On redispatch les variables ?

  mutate(VOLUME = as.numeric(VOLUME)) %>%
#On passe VOLUME en numérique ?

  group_by(ID) %>%
#On remet ensemble toutes les ID correspondante ?

  filter(DESTINATION == "SCIERIE") %>%
  summarise(
    total_volume = sum(VOLUME, na.rm = TRUE)




Encore merci.

PS : je me suis rendus compte que l'extrait de data.frame du premier post était peut-être pas très clair, j'ai pris les première lignes mais les volumes dans VOLUME5, VOLUME4, etc ne sont pas tous égal à 0 et les DESTINATION5, DESTINATION4 etc pas toutes égal à NA.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar Mickael Canouil » 31 Mai 2019, 10:44

Bonjour,

"tidyverse" est juste plus simple pour charger l'ensemble de package qui fonctionne bien ensemble.
Ici, seulement les packages dplyr et tidyr sont utilisé.


Pour le détails du code, une première à faire en général est de consulter l'aide de R:

Code : Tout sélectionner

library(dplyr)
library(tidyr)
?n
?spread
?gather
?group_by
?as.numeric

Vous pouvez également exécuter le code pas-à-pas pour le comprendre.

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n()))
#>    VOLUME4 DESTINATION4 VOLUME3 DESTINATION3 VOLUME2 DESTINATION2 ID
#> 1        0         <NA>       0         <NA>   7.499      SCIERIE  1
#> 2        0         <NA>       0         <NA>   3.695      SCIERIE  2
#> 3        0         <NA>       0         <NA>   2.863      SCIERIE  3
#> 4        0         <NA>       0         <NA>  12.063       EXPORT  4
#> 5        0         <NA>       0         <NA>   0.000         <NA>  5
#> 6        0         <NA>       0         <NA>   0.000         <NA>  6
#> 7        0         <NA>       0         <NA>   6.569      SCIERIE  7
#> 8        0         <NA>       0         <NA>   8.384      SCIERIE  8
#> 9        0         <NA>       0         <NA>   4.536      SCIERIE  9
#> 10       0         <NA>       0         <NA>   6.858       EXPORT 10

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>%
  tidyr::gather(key = variable, value = value, -ID)
#>    ID     variable   value
#> 1   1      VOLUME4       0
#> 2   2      VOLUME4       0
#> 3   3      VOLUME4       0
#> 4   4      VOLUME4       0
#> 5   5      VOLUME4       0
#> 6   6      VOLUME4       0
#> 7   7      VOLUME4       0
#> 8   8      VOLUME4       0
#> 9   9      VOLUME4       0
#> 10 10      VOLUME4       0
#> 11  1 DESTINATION4    <NA>
#> 12  2 DESTINATION4    <NA>
#> 13  3 DESTINATION4    <NA>
#> 14  4 DESTINATION4    <NA>
#> 15  5 DESTINATION4    <NA>
#> 16  6 DESTINATION4    <NA>
#> 17  7 DESTINATION4    <NA>
#> 18  8 DESTINATION4    <NA>
#> 19  9 DESTINATION4    <NA>
#> 20 10 DESTINATION4    <NA>
#> 21  1      VOLUME3       0
#> 22  2      VOLUME3       0
#> 23  3      VOLUME3       0
#> 24  4      VOLUME3       0
#> 25  5      VOLUME3       0
#> 26  6      VOLUME3       0
#> 27  7      VOLUME3       0
#> 28  8      VOLUME3       0
#> 29  9      VOLUME3       0
#> 30 10      VOLUME3       0
#> 31  1 DESTINATION3    <NA>
#> 32  2 DESTINATION3    <NA>
#> 33  3 DESTINATION3    <NA>
#> 34  4 DESTINATION3    <NA>
#> 35  5 DESTINATION3    <NA>
#> 36  6 DESTINATION3    <NA>
#> 37  7 DESTINATION3    <NA>
#> 38  8 DESTINATION3    <NA>
#> 39  9 DESTINATION3    <NA>
#> 40 10 DESTINATION3    <NA>
#> 41  1      VOLUME2   7.499
#> 42  2      VOLUME2   3.695
#> 43  3      VOLUME2   2.863
#> 44  4      VOLUME2  12.063
#> 45  5      VOLUME2       0
#> 46  6      VOLUME2       0
#> 47  7      VOLUME2   6.569
#> 48  8      VOLUME2   8.384
#> 49  9      VOLUME2   4.536
#> 50 10      VOLUME2   6.858
#> 51  1 DESTINATION2 SCIERIE
#> 52  2 DESTINATION2 SCIERIE
#> 53  3 DESTINATION2 SCIERIE
#> 54  4 DESTINATION2  EXPORT
#> 55  5 DESTINATION2    <NA>
#> 56  6 DESTINATION2    <NA>
#> 57  7 DESTINATION2 SCIERIE
#> 58  8 DESTINATION2 SCIERIE
#> 59  9 DESTINATION2 SCIERIE
#> 60 10 DESTINATION2  EXPORT

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>%
  tidyr::gather(key = variable, value = value, -ID) %>%
  dplyr::mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  )
#>    ID    variable   value number
#> 1   1      VOLUME       0      4
#> 2   2      VOLUME       0      4
#> 3   3      VOLUME       0      4
#> 4   4      VOLUME       0      4
#> 5   5      VOLUME       0      4
#> 6   6      VOLUME       0      4
#> 7   7      VOLUME       0      4
#> 8   8      VOLUME       0      4
#> 9   9      VOLUME       0      4
#> 10 10      VOLUME       0      4
#> 11  1 DESTINATION    <NA>      4
#> 12  2 DESTINATION    <NA>      4
#> 13  3 DESTINATION    <NA>      4
#> 14  4 DESTINATION    <NA>      4
#> 15  5 DESTINATION    <NA>      4
#> 16  6 DESTINATION    <NA>      4
#> 17  7 DESTINATION    <NA>      4
#> 18  8 DESTINATION    <NA>      4
#> 19  9 DESTINATION    <NA>      4
#> 20 10 DESTINATION    <NA>      4
#> 21  1      VOLUME       0      3
#> 22  2      VOLUME       0      3
#> 23  3      VOLUME       0      3
#> 24  4      VOLUME       0      3
#> 25  5      VOLUME       0      3
#> 26  6      VOLUME       0      3
#> 27  7      VOLUME       0      3
#> 28  8      VOLUME       0      3
#> 29  9      VOLUME       0      3
#> 30 10      VOLUME       0      3
#> 31  1 DESTINATION    <NA>      3
#> 32  2 DESTINATION    <NA>      3
#> 33  3 DESTINATION    <NA>      3
#> 34  4 DESTINATION    <NA>      3
#> 35  5 DESTINATION    <NA>      3
#> 36  6 DESTINATION    <NA>      3
#> 37  7 DESTINATION    <NA>      3
#> 38  8 DESTINATION    <NA>      3
#> 39  9 DESTINATION    <NA>      3
#> 40 10 DESTINATION    <NA>      3
#> 41  1      VOLUME   7.499      2
#> 42  2      VOLUME   3.695      2
#> 43  3      VOLUME   2.863      2
#> 44  4      VOLUME  12.063      2
#> 45  5      VOLUME       0      2
#> 46  6      VOLUME       0      2
#> 47  7      VOLUME   6.569      2
#> 48  8      VOLUME   8.384      2
#> 49  9      VOLUME   4.536      2
#> 50 10      VOLUME   6.858      2
#> 51  1 DESTINATION SCIERIE      2
#> 52  2 DESTINATION SCIERIE      2
#> 53  3 DESTINATION SCIERIE      2
#> 54  4 DESTINATION  EXPORT      2
#> 55  5 DESTINATION    <NA>      2
#> 56  6 DESTINATION    <NA>      2
#> 57  7 DESTINATION SCIERIE      2
#> 58  8 DESTINATION SCIERIE      2
#> 59  9 DESTINATION SCIERIE      2
#> 60 10 DESTINATION  EXPORT      2

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>%
  tidyr::gather(key = variable, value = value, -ID) %>%
  dplyr::mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  ) %>%
  tidyr::spread(key = variable, value = value)
#>    ID number DESTINATION VOLUME
#> 1   1      2     SCIERIE  7.499
#> 2   1      3        <NA>      0
#> 3   1      4        <NA>      0
#> 4   2      2     SCIERIE  3.695
#> 5   2      3        <NA>      0
#> 6   2      4        <NA>      0
#> 7   3      2     SCIERIE  2.863
#> 8   3      3        <NA>      0
#> 9   3      4        <NA>      0
#> 10  4      2      EXPORT 12.063
#> 11  4      3        <NA>      0
#> 12  4      4        <NA>      0
#> 13  5      2        <NA>      0
#> 14  5      3        <NA>      0
#> 15  5      4        <NA>      0
#> 16  6      2        <NA>      0
#> 17  6      3        <NA>      0
#> 18  6      4        <NA>      0
#> 19  7      2     SCIERIE  6.569
#> 20  7      3        <NA>      0
#> 21  7      4        <NA>      0
#> 22  8      2     SCIERIE  8.384
#> 23  8      3        <NA>      0
#> 24  8      4        <NA>      0
#> 25  9      2     SCIERIE  4.536
#> 26  9      3        <NA>      0
#> 27  9      4        <NA>      0
#> 28 10      2      EXPORT  6.858
#> 29 10      3        <NA>      0
#> 30 10      4        <NA>      0

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>%
  tidyr::gather(key = variable, value = value, -ID) %>%
  dplyr::mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  ) %>%
  tidyr::spread(key = variable, value = value) %>%
  dplyr::mutate(VOLUME = as.numeric(VOLUME))
#>    ID number DESTINATION VOLUME
#> 1   1      2     SCIERIE  7.499
#> 2   1      3        <NA>  0.000
#> 3   1      4        <NA>  0.000
#> 4   2      2     SCIERIE  3.695
#> 5   2      3        <NA>  0.000
#> 6   2      4        <NA>  0.000
#> 7   3      2     SCIERIE  2.863
#> 8   3      3        <NA>  0.000
#> 9   3      4        <NA>  0.000
#> 10  4      2      EXPORT 12.063
#> 11  4      3        <NA>  0.000
#> 12  4      4        <NA>  0.000
#> 13  5      2        <NA>  0.000
#> 14  5      3        <NA>  0.000
#> 15  5      4        <NA>  0.000
#> 16  6      2        <NA>  0.000
#> 17  6      3        <NA>  0.000
#> 18  6      4        <NA>  0.000
#> 19  7      2     SCIERIE  6.569
#> 20  7      3        <NA>  0.000
#> 21  7      4        <NA>  0.000
#> 22  8      2     SCIERIE  8.384
#> 23  8      3        <NA>  0.000
#> 24  8      4        <NA>  0.000
#> 25  9      2     SCIERIE  4.536
#> 26  9      3        <NA>  0.000
#> 27  9      4        <NA>  0.000
#> 28 10      2      EXPORT  6.858
#> 29 10      3        <NA>  0.000
#> 30 10      4        <NA>  0.000

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>%
  tidyr::gather(key = variable, value = value, -ID) %>%
  dplyr::mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  ) %>%
  tidyr::spread(key = variable, value = value) %>%
  dplyr::mutate(VOLUME = as.numeric(VOLUME)) %>%
  dplyr::group_by(ID)
#> # A tibble: 30 x 4
#> # Groups:   ID [10]
#>       ID number DESTINATION VOLUME
#>    <int> <chr>  <chr>        <dbl>
#>  1     1 2      SCIERIE       7.50
#>  2     1 3      <NA>          0   
#>  3     1 4      <NA>          0   
#>  4     2 2      SCIERIE       3.70
#>  5     2 3      <NA>          0   
#>  6     2 4      <NA>          0   
#>  7     3 2      SCIERIE       2.86
#>  8     3 3      <NA>          0   
#>  9     3 4      <NA>          0   
#> 10     4 2      EXPORT       12.1
#> # … with 20 more rows

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>%
  tidyr::gather(key = variable, value = value, -ID) %>%
  dplyr::mutate(
    number = gsub("[A-Za-z]", "", variable),
    variable = gsub("[0-9]", "", variable)
  ) %>%
  tidyr::spread(key = variable, value = value) %>%
  dplyr::mutate(VOLUME = as.numeric(VOLUME)) %>%
  dplyr::group_by(ID) %>%
  dplyr::filter(DESTINATION == "SCIERIE")
#> # A tibble: 6 x 4
#> # Groups:   ID [6]
#>      ID number DESTINATION VOLUME
#>   <int> <chr>  <chr>        <dbl>
#> 1     1 2      SCIERIE       7.50
#> 2     2 2      SCIERIE       3.70
#> 3     3 2      SCIERIE       2.86
#> 4     7 2      SCIERIE       6.57
#> 5     8 2      SCIERIE       8.38
#> 6     9 2      SCIERIE       4.54


Ceci étant dit:

Code : Tout sélectionner

.data %>%
  dplyr::mutate(ID = seq(dplyr::n())) %>% # création d'un identifiant unique par ligne en prenant une suite de valeur numérique de 1 à "n", avec "n" le nombre de lignes compter par n() => voir l'aide
  tidyr::gather(key = variable, value = value, -ID) %>% # voir l'aide
  dplyr::mutate(
    number = gsub("[A-Za-z]", "", variable), # remplace les lettres par rien => extrait la partie numérique (via expression régulière)
    variable = gsub("[0-9]", "", variable) # remplace les chiffres par rien => extrait la partie texte (via expression régulière)
  ) %>%
  tidyr::spread(key = variable, value = value) %>% # voir l'aide
  dplyr::mutate(VOLUME = as.numeric(VOLUME)) %>% # voir l'aide
  dplyr::group_by(ID) %>% # voir l'aide
  dplyr::filter(DESTINATION == "SCIERIE") %>% # voir l'aide
  dplyr::summarise( # voir l'aide
    total_volume = sum(VOLUME, na.rm = TRUE)
  )


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

David Josse
Messages : 6
Enregistré le : 18 Mai 2019, 05:58

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar David Josse » 01 Juin 2019, 10:31

Bonjour,

Merci pour votre réponse détaillée, l'aide de r est pratique mais rédigées par des personnes ayant une bonne maîtrise du logiciel et les erreurs "stupides" faites par les débutants ne sont en général pas abordées. Les packages de tydiverse sont vraiment très pratique sous plein d'aspects je commence à bien comprendre comment les utiliser. Finalement je travaillais à partir d'un fichier qui comportait déjà une id associée à chaque grume et une ligne par billons que j'avais moi même remis en forme (la mauvaise habitude d'exel). J'utilise donc simplement un dérivé de la fin de votre solution (l'étudier ma fait pas mal progresser) :

Code : Tout sélectionner

data <- data %>%
   group_by(DESTINATION,NUMBILLE) %>%
   summarise(VOLUME=sum(CUBAGE),BILLONS=n()) %>%
   spread(key=DESTINATION,value=VOLUME,fill=0)


Merci à tous de m'avoir répondu.

David.

David Josse
Messages : 6
Enregistré le : 18 Mai 2019, 05:58

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar David Josse » 01 Juin 2019, 10:33

Une question peut-être stupide, est-ce à moi ou au modérateur de classer le sujet comme résolu ?

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Somme en fonction d'arguments multiples dans plusieurs colonnes

Messagepar Mickael Canouil » 03 Juin 2019, 10:46

Vous pouvez éditer le sujet de votre message initial.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité