Bonjour à tous,
Je souhaiterai agréger certaines lignes de mon data.frame qui se présente comme ceci :
Si deux lignes présentent : 1/la même date V2 + 2/le même code V6 + 3/un chiffre V9 inférieur à 10
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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):
J'ai tenté plusieurs codes mais je pense que la meilleure forme serait une boucle for sur tout le data.frame, du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Est-ce que quelqu'un aurait des pistes pour arriver au résultat voulu ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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) } }
Merci beaucoup !
Partager