Comment utiliser la fonction aggregate (ou autre fonction) pour cumuler les lignes ?
Bonjour,
Voici un exemple de data frame sur lequel je travail.
Code:
1 2
|
df <- data.frame(A = c("A", "A", "B", "C", "C", "C"), B = c("X", "Y", "Z", "X", "Y", "Z"), C = c("ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ"), D = c(1, 2, 3, 4, 5, 6)) |
J'aimerais cumuler toutes les lignes en commun de la colonne A même si les données de la colonne B et C sont différentes.
Voici le résultat attendu :
Code:
1 2
|
df <- data.frame(A = c("A", "B", "C"), B = c("X", "Z", "X"), C = c("ZZZ", "ZZZ", "ZZZ"), D = c(3, 3, 15)) |
Et voici mon code :
Code:
1 2
|
df <- aggregate(. ~A+B+C, df, sum) |
Cordialement,
Arkning
Comment utiliser la fonction aggregate (ou autre fonction) pour cumuler les lignes ?
Bonjour,
Une alternative avec le package sqldf si vous connaissez le langage SQL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| > df <- data.frame(A = c("A", "A", "B", "C", "C", "C"),
+ B = c("X", "Y", "Z", "X", "Y", "Z"),
+ C = c("ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ"),
+ D = c(1, 2, 3, 4, 5, 6))
> df
A B C D
1 A X ZZZ 1
2 A Y ZZZ 2
3 B Z ZZZ 3
4 C X ZZZ 4
5 C Y ZZZ 5
6 C Z ZZZ 6 |
Code:
1 2 3 4 5 6 7
| > sqldf("select A, B, C, sum(D) as SommeD
+ from df
+ group by A")
A B C SommeD
1 A Y ZZZ 3
2 B Z ZZZ 3
3 C Z ZZZ 15 |
Cordialement,