Conserver les 2 premières lignes par groupe
Bonjour Lils_bis,
Vous pouvez procéder comme pour votre précédente demande en remplaçant la fonction tail() par head() et le nombre de lignes n=1 par n=2.
Cordialement,
Conserver les 2 premières lignes par groupe
Bonjour Lils_bis,
Il est difficile de voir une erreur si vous ne fournissez pas votre code ;-)
Voici la solution :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| > df <- read.csv("D:/temp/test.txt")
> df
ID date_envoi date_reception diff
1 1 2017-02-23 2017-02-24 1
2 1 2017-02-23 2017-02-28 5
3 1 2017-03-12 2017-03-19 7
4 4 2016-02-19 2017-02-22 3
5 5 2016-03-24 2017-03-28 4
6 6 2015-01-12 2017-01-20 8
7 6 2015-01-19 2017-01-20 1
8 8 2014-02-07 2017-02-09 2
9 8 2014-02-07 2017-02-12 5
10 8 2014-03-21 2017-03-25 4
11 8 2014-03-24 2017-03-25 1 |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| > myBys <- data.frame(df$ID)
> myBys
df.ID
1 1
2 1
3 1
4 4
5 5
6 6
7 6
8 8
9 8
10 8
11 8 |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| > my2firstList <- by(df, myBys, head, n=2)
> my2firstList
df.ID: 1
ID date_envoi date_reception diff
1 1 2017-02-23 2017-02-24 1
2 1 2017-02-23 2017-02-28 5
------------------------------------------------------------
df.ID: 4
ID date_envoi date_reception diff
4 4 2016-02-19 2017-02-22 3
------------------------------------------------------------
df.ID: 5
ID date_envoi date_reception diff
5 5 2016-03-24 2017-03-28 4
------------------------------------------------------------
df.ID: 6
ID date_envoi date_reception diff
6 6 2015-01-12 2017-01-20 8
7 6 2015-01-19 2017-01-20 1
------------------------------------------------------------
df.ID: 8
ID date_envoi date_reception diff
8 8 2014-02-07 2017-02-09 2
9 8 2014-02-07 2017-02-12 5 |
Code:
1 2 3 4 5 6 7 8 9 10 11
| > df <- do.call(rbind, my2firstList)
> df
ID date_envoi date_reception diff
1.1 1 2017-02-23 2017-02-24 1
1.2 1 2017-02-23 2017-02-28 5
4 4 2016-02-19 2017-02-22 3
5 5 2016-03-24 2017-03-28 4
6.6 6 2015-01-12 2017-01-20 8
6.7 6 2015-01-19 2017-01-20 1
8.8 8 2014-02-07 2017-02-09 2
8.9 8 2014-02-07 2017-02-12 5 |
Cordialement,
1 pièce(s) jointe(s)
Conserver les 2 premières lignes par groupe
Bonjour,
Ce message date un peu mais voici une nouvelle proposition en numérotant les répétitions par groupe et en sélectionnant les répétitions 1 et 2 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| > df <- read.csv("D:/temp/test.txt")
> df
ID date_envoi date_reception diff
1 1 2017-02-23 2017-02-24 1
2 1 2017-02-23 2017-02-28 5
3 1 2017-03-12 2017-03-19 7
4 4 2016-02-19 2017-02-22 3
5 5 2016-03-24 2017-03-28 4
6 6 2015-01-12 2017-01-20 8
7 6 2015-01-19 2017-01-20 1
8 8 2014-02-07 2017-02-09 2
9 8 2014-02-07 2017-02-12 5
10 8 2014-03-21 2017-03-25 4
11 8 2014-03-24 2017-03-25 1 |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| > df <- df[order(df$ID),]
> df$obsnum <- sequence(rle(as.vector(df$ID))$lengths)
> df <- df[which(df$obsnum %in% c(1,2)),]
> df
ID date_envoi date_reception diff obsnum
1 1 2017-02-23 2017-02-24 1 1
2 1 2017-02-23 2017-02-28 5 2
4 4 2016-02-19 2017-02-22 3 1
5 5 2016-03-24 2017-03-28 4 1
6 6 2015-01-12 2017-01-20 8 1
7 6 2015-01-19 2017-01-20 1 2
8 8 2014-02-07 2017-02-09 2 1
9 8 2014-02-07 2017-02-12 5 2 |
Cordialement,