Manipulation data frame : agréger sous plusieurs conditions
Bonjour à tous,
Je souhaiterai agréger certaines lignes de mon data.frame qui se présente comme ceci :
Code:
1 2 3 4 5 6 7 8
|
> HA
V2 V3 V6 V8 V9
1: 20/04/2016 13:27:48.62 982_000402954704 1 40340
2: 20/04/2016 13:27:49.63 982_000402954704 12 10
3: 20/04/2016 13:58:59.90 982_000402954704 1 18583
4: 20/04/2016 13:59:00.11 982_000402954704 6 1
5: 20/04/2016 13:59:00.91 982_000402954704 1 2 |
Si deux lignes présentent : 1/la même date V2 + 2/le même code V6 + 3/un chiffre V9 inférieur à 10
Alors, je voudrais agréger ces lignes en gardant : 1/l'heure V3 de la 1ère ligne, 2/la somme des V8 et V9
Le résultat attendu serait (les deux dernières lignes ont été agrégées):
Code:
1 2 3 4 5 6 7
|
> HA
V2 V3 V6 V8 V9
1: 20/04/2016 13:27:48.62 982_000402954704 1 40340
2: 20/04/2016 13:27:49.63 982_000402954704 12 10
3: 20/04/2016 13:58:59.90 982_000402954704 1 18583
4: 20/04/2016 13:59:00.11 982_000402954704 7 3 |
J'ai tenté plusieurs codes mais je pense que la meilleure forme serait une boucle for sur tout le data.frame, du type :
Code:
1 2 3 4 5 6 7 8
|
for (i in 1:nrow(HA))
{
if (HA$V6[i] == HA$V6[i+1] & HA$V2[i] == HA$V2[i+1] & HA$V9 < 10)
{
aggregate(HA$V8, list(HA$V2, HA$V3, HA$V6), sum)
}
} |
Est-ce que quelqu'un aurait des pistes pour arriver au résultat voulu ?
Merci beaucoup !