Bonjour,

Je travail avec deux data frame qui ont la même architecture et j'aimerais synthétiser les données présentes sur ceux-ci sur un seul et unique data frame. Voici un exemple :

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
 
df2 <- data.frame("S" = c("M", "M", "SE", "SI", "V", "M"), "C" = c(300, 400, 400, 500, 600, 1000), "F" = c("F1", "F2", "F3", "F2", "F4", "F5"),
                  "M" = c("M1", "M2", "M1", "M2", "M3", "M1"), stringsAsFactors = FALSE)
 
df3 <- data.frame("S" = c("M", "SE", "SI"), "C" = c(3000, 4000, 5000), "F" = c("F1", "F2", "F3"),
                  "M" = c("M1", "M2", "M3"), stringsAsFactors = FALSE)
 
df <- data.frame(F = sort(unlist(unique(df2$M))))
a <- df2 %>% group_by(M) %>% summarise(C = sum(C))
a <- as.data.frame(a)
a <- a[order(a$M),]
b <- df3 %>% group_by(M) %>% summarise(C = sum(C))
b <- as.data.frame(b)
b <- b[order(b$M),]
df$M <- NA
df$SE <- NA
df$SI <- NA
df$V <- NA
df$T <- a$C
df$T2 <- b$C
df$T3 <- df$T / 3 * 12
df$T4 <- ((df$T3 / df$T2) - 1) * 100
df <- df[order(df$T, decreasing = TRUE),]
 
df4 <- data.frame("F" = c("M1", "F5", "F3", "F1", "M2", "F2", "M3", "F4"),
                 "M" = c(1300, 1000, 0, 300, 400, 400, 0, 0),
                 "SE" = c(400, 0, 400, 0, 0, 0, 0, 0),
                 "SI" = c(0, 0, 0, 0, 500, 500, 0, 0),
                 "V" = c(0, 0, 0, 0, 0, 0, 600, 600),
                 "T" = c(1700, 1000, 400, 300, 900, 900, 600, 600),
                 "T2" = c(3000, 0, 0, 3000, 4000, 4000, 5000, 5000),
                 "T3" = 0,
                 "T4" = 0,
                 "R" = NA, stringsAsFactors = FALSE)
 
df4$T3 <- df4$T / 3 * 12
df4$T4 <- ((df4$T3 / df4$T2) - 1) * 100
df4[c(2, 3), "T4"] <- 100
Avant j'utilisai une boucle pour créer mon data frame au fur et à mesure, cependant je travailel avec des data frame qui contiennent beaucoup de ligne donc j'aimerais éviter d'en utiliser. Maintenant j'arrive à remplir mon data frame de synthèse comme le data frame "df" dans l'exemple et j'aimerais maintenant savoir comment je peux remplir mon data frame "df" pour arriver au même résultat que le data frame "df4".
Ou alors si je peux arriver au résultat "df4" sans passez par l'étape de "df", je suis ouvert à toutes propositions.

Il y a aussi beaucoup de contraintes à respecter comme le fait que l'ordre de la colonne "M" dans le résultat n'est pas forcément M1, M2, M3... mais ils doivent être dans l'ordre décroissant par rapport à la colonne "T" donc si on M3 = 200, M2 = 50 et M1 = 100 on aura M3 puis M1 puis M2, on a aussi le fait que lorsqu'on insert les lignes avec "F" dans le résultat elles doivent être également classées dans l'ordre décroissant toujours par rapport à "T" mais chacune propre au "MX" qui leur correspondent.

Je tiens à préciser qu'il ne faut pas traiter les données comme elles sont présentées, je ne peux pas dévoiler les données avec lesquelles je travaille donc j'ai du les modifier. Je veux dire par cela qu'il ne faut pas par exemple se baser sur le fait que la colonne M contient des données de type "M1", "M2", "M3", ... "MX"

Cordialement,

Arkning