Bonjour,
J'ai un data frame qui a une certaine forme et j'aimerais remodeler la forme du data frame. J'ai par exemple utilisé la fonction cast() qui me donne déjà un bon résultat cependant ce n'est pas exactement ce que j'attends. Pour être plus clair je vais vous montrer un exemple de mon data frame :
Voici un exemple du résultat attendu :
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 df <- data.frame("Periode" = c("2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-05-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-06-01", "2019-01-01", "2019-01-01", "2019-01-01", "2019-01-01"), "Action" = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4), "Nom" = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"), "Sous_Nom" = c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "b", "b", "b", "b"), "Nombre" = c(4637, 4637, 4637, 4637, 500, 500, 500, 500, 500, 500, 3000, 3000, 3000, 3000, 30, 30, 30, 30, 30, 30, 2000, 2000, 2000, 2000), "Temps" = c(5, 5, 120, 20, 30, 0, 1, 0, 0, 1, 2, 2, 120, 10, 10, 0, 1, 0, 0, 1, 5, 5, 10, 5), stringsAsFactors = FALSE)
La colonne "Nb_X" (le X correspond au mois) correspond à la colonne "Nombre" du data frame "df" cependant il faut récupérer la valeur d'une ligne dont la colonne "Action" est comprise entre 1 et 4.
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 result <- data.frame("Nom" = c("A", "A"), "Sous_Nom" = c("a", "b"), "Nb_1" = c(NA, 2000), "Nbr_1" = c(NA, NA), "Temps_1" = c(NA, 25), "Nb_2" = c(NA, NA), "Nbr_2" = c(NA, NA), "Temps_2" = c(NA, NA), "Nb_3" = c(NA, NA), "Nbr_3" = c(NA, NA), "Temps_3" = c(NA, NA), "Nb_4" = c(NA, NA), "Nbr_4" = c(NA, NA), "Temps_4" = c(NA, NA), "Nb_5" = c(4637, NA), "Nbr_5" = c(500, NA), "Temps_5" = c(182, NA), "Nb_6" = c(3000, NA), "Nbr_6" = c(30, NA), "Temps_6" = c(146, NA), "Nb_7" = c(NA, NA), "Nbr_7" = c(NA, NA), "Temps_7" = c(NA, NA), "Nb_8" = c(NA, NA), "Nbr_8" = c(NA, NA), "Temps_8" = c(NA, NA), "Nb_9" = c(NA, NA), "Nbr_9" = c(NA, NA), "Temps_9" = c(NA, NA), "Nb_10" = c(NA, NA), "Nbr_10" = c(NA, NA), "Temps_10" = c(NA, NA), "Nb_11" = c(NA, NA), "Nbr_11" = c(NA, NA), "Temps_11" = c(NA, NA), "Nb_12" = c(NA, NA), "Nbr_12" = c(NA, NA), "Temps_12" = c(NA, NA), stringsAsFactors = FALSE)
La colonne "Nbr_X" (le X correspond au mois) correspond à la colonne "Nombre" du data frame "df" cependant il faut récupérer la valeur d'une ligne dont la colonne "Action" est comprise entre 5 et 10.
La colonne "Temps_X" (le X correspond au mois) correspond au total de la colonne "Temps" du data frame "df" est ceci quelque soit la valeur de "Action" il faut seulement cumuler la donnée qui fait partie du même mois.
J'espère avoir exprimer mon problème/besoin assez clairement si quoi que se soit vous paraisses ambiguë n'hésitez pas à m'en informer j'essayerai de vous expliquer plus clairement si besoin.
Cordialement,
Arkning.
Partager