Je rencontre des difficultés au niveau d'une table nommée etude_loco (environ 170 000 lignes).
Cette table comprend plusieurs champs, dont un numéro de modèle (osm_num_immat_ef) pour une série donnée (BB26000).
Un aperçu du début de cette table :
Code : Tout sélectionner
> names(etude_loco)=c("id_intervmai","id_engin","debut_interv","fin_interv","osm_num","osm_serie")
> head(etude_loco)
id_intervmai id_engin debut_interv fin_interv osm_num osm_serie
1 4849736 103539 2010-04-12 14:50:39 2010-04-15 15:10:28 BB26085 BB26000
2 8765441 103539 2013-07-30 09:21:23 2013-07-30 09:21:24 BB26085 BB26000
3 8777423 103539 2013-08-01 13:46:24 2013-08-02 14:01:19 BB26085 BB26000
4 9012662 103539 2013-10-01 08:14:49 2013-10-01 09:40:03 BB26085 BB26000
5 9013520 103539 2013-10-01 09:39:55 2013-10-01 09:39:56 BB26085 BB26000
6 9010855 103539 2013-09-30 19:39:02 2013-09-30 22:08:13 BB26085 BB26000
Je souhaite réaliser deux choses :
(i) calculer le temps moyen d'intervention pour un numéro de série donné (sans tenir compte de l'année)
(ii) calculer le temps moyen d'intervention pour une année donnée (sans tenir compte du modèle)
Pour résoudre mes problématiques, j'ai essayé de "découper" mon tableau initial afin de créer une liste (à l'aide de la fonction split).
Mes colonnes debut_interv et fin_interv sont au format difftime, j'ai ainsi envisagé de créer une nouvelle colonne en soustrayant ces deux colonnes afin d'obtenir un temps, que j'ai converti numériquement par la suite avec la commande as.numeric().
J'ai également essayé de séparer mon tableau suivant les années, en essayant uniquement de conserver la date (dois-je la transformer en numérique ?) :
Code : Tout sélectionner
table=data.frame(etude_loco$fin_interv-etude_loco$debut_interv,format(etude_loco$debut_interv,format="%Y"))
names(table)=c("temps_indispo","annee")
etude_loco=cbind(etude_loco,table)
etude_loco$temps_indispo=as.numeric(etude_loco$temps_indispo)
Par exemple, pour le problème (i), j'ai effectué :
Code : Tout sélectionner
decoupage_prelim=split(etude_loco,etude_loco$osm_num)
qui me retourne bien une liste de tableaux pour un modèle donné
Et c'est là qu'intervient mon souci ; comment-puis je, à partir de cette grande liste constituée de listes plus petites, calculer une moyenne sur la colonne temps_indispo et ce sur chaque élément de la liste ? Comment faire de même si j'envisage de découper mon tableau de base suivant les années et non suivant les modèles ?
J'ai songé à employer des boucles mais ce n'est pas concluant... Je ne sais pas si on indicer suivant les éléments d'une liste. J'aurai voulu, si c'est possible faire quelque chose du type :
Code : Tout sélectionner
créer vecteur de taille longueur de liste
pour i parcourant mes différentes sous listes
calculer moyenne de colonne temps_indispo et la stocker au rang i du dit vecteur
puis afficher un graphique
Je ne sais pas si je suis assez clair, mais je peux préciser davantage d'informations si jamais.
Je pense m'y prendre de la mauvaise manière, mais si vous avez une/des solution(s) qui correspond(ent) à mes problèmes je suis tout ouïe. (Et pas de souci si ça n'a rien à voir avec ce que je tente de faire, du moment que le résultat est concluant !)
Je vous remercie par avance pour votre aide.
Cordialement,
Nicolas.
NB: J'ai une autre question pendant que j'y pense, quelle(s) représentation(s) serait(ent) utile(s) pour mes données ? Je pensais réaliser des diagrammes en bâton, mais en général il faut des fréquences en ordonnées...