Somme sur une colonne d'une table de données avec des conditions
Bonjour à tous,
Etant confronté à un soucis sur R je sollicite votre aide. Merci d'avance pour le temps que vous me consacré.
Voici mes données:
contrat |
date |
Mois |
Montant |
1 |
01/05/2017 |
5 |
300 |
2 |
09/04/2016 |
4 |
500 |
2 |
15/05/2016 |
5 |
150 |
2 |
19/12/2017 |
12 |
30 |
5 |
30/02/2005 |
2 |
100 |
5 |
30/01/2005 |
1 |
100 |
10 |
23/07/2007 |
7 |
10 |
10 |
23/08/2007 |
8 |
50 |
2 |
23/12/2007 |
12 |
200 |
J'aimerais obtenir le tableau suivant avec ces conditions:
IF Mois <= 3 THEN Q1 = sum(Montant); ELSE Q1 = 0
IF Mois > 3 and Mois <=6 THEN Q2 = sum(Montant) ; ELSE Q2 = 0
IF Mois > 6 and Mois <=9 THEN Q3 = sum(Montant); ELSE Q3 = 0
IF Mois > 9 THEN Q4 = sum(Montant); ELSE Q4 = 0
contrat |
Q1 |
Q2 |
Q3 |
Q4 |
1 |
0 |
300 |
0 |
0 |
2 |
0 |
650 |
0 |
0 |
2 |
0 |
0 |
0 |
230 |
5 |
200 |
0 |
0 |
0 |
10 |
0 |
0 |
60 |
0 |
Encore une fois merci pour votre aide.
Somme sur une colonne d'une table de données avec des conditions
Bonjour,
Par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| > df <- read.table("test.txt",header=TRUE)
> df$Q1 <- ifelse(df$Mois <= 3, df$Montant, 0)
> df$Q2 <- ifelse(df$Mois > 3 & df$Mois <= 6, df$Montant, 0)
> df$Q3 <- ifelse(df$Mois > 6 & df$Mois <= 9, df$Montant, 0)
> df$Q4 <- ifelse(df$Mois > 9, df$Montant, 0)
> df
contrat date Mois Montant Q1 Q2 Q3 Q4
1 1 01/05/2017 5 300 0 300 0 0
2 2 09/04/2016 4 500 0 500 0 0
3 2 15/05/2016 5 150 0 150 0 0
4 2 19/12/2017 12 30 0 0 0 30
5 5 30/02/2005 2 100 100 0 0 0
6 5 30/01/2005 1 100 100 0 0 0
7 10 23/07/2007 7 10 0 0 10 0
8 10 23/08/2007 8 50 0 0 50 0
9 2 23/12/2007 12 200 0 0 0 200 |
Code:
1 2 3 4 5 6 7 8
| > df <- aggregate(df[,5:8],by=list(df$contrat),sum)
> colnames(df)[colnames(df)=="Group.1"] <- "contrat"
> df
contrat Q1 Q2 Q3 Q4
1 1 0 300 0 0
2 2 0 650 0 230
3 5 200 0 0 0
4 10 0 0 60 0 |
Cordialement,