Bonsoir tigremignon,
Si tu peux utiliser le package data.table :
1 2 3
| library(data.table)
tbl <- data.table(dt) # dt est la data frame en question
tbl[, list(new.n=..., time.length=..., forage=...), by = ID] |
Je laisse aussi un code complet qui fonctionne chez moi mais il y a probablement moyen de faire quelque chose de moins horrible (j'espère) surtout pour le time.length
Si tu sais comment faire, je serai intéressé de voir une meilleure solution.
tbl[, list(new.n=floor(mean(n)), time.length=strftime(as.POSIXct(as.numeric(max(as.POSIXct(time, format="%H:%M")) - min(as.POSIXct(time, format="%H:%M"))), origin=Sys.Date()), tz="UTC", format="%H:%M"), forage=mean(fo)/floor(mean(n))), by = ID]
Partager