Bonjour à tous,

Débutante en R, je rencontre un problème auquel je ne trouve pas de réponse..

Mon problème est le suivant :

J'ai un data frame avec 3336 observations et 10 variables (voir ci-dessous). J'ai ordonné mon data_frame selon le n° de l'animal et aussi le jour à l'aide de la ligne de code suivante (en passant j'ai viré les cases où il n'y avait pas de valeur (NA)) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
FIO <- FIO[complete.cases(FIO$animal_number), ]
FIO1  <- FIO [order(FIO[,1],decreasing=FALSE),]
Nom : Untitled2.png
Affichages : 2248
Taille : 54,1 Ko
Je souhaitais obtenir un poids moyen par animal et par jour, j'ai donc fait une aggrégation avec l'instruction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
mean_weight <- aggregate(weight ~day_visit_time+animal_number, data = FIO1, mean)
J'ai également calculé les variables x et y : x correspond à mean-2sd et y correspond à mean+2sd.
J'ai ainsi obtenu le data.frame suivant : Nom : Untitled3.png
Affichages : 2219
Taille : 47,0 Ko

Ce nouveau dataframe agregé ne contient plus que 300 lignes contre 3338 pour le premier, les merger ou appliquer la fonction cbind() est donc impossible.

Je souhaiterais savoir si mon observation z (observation n°i, jour i, animal i) est comprise dans l'intervalle y/y de son groupe (c'est à dire même jour, même n°animal).
Pour cela, je vais utiliser la fonction ifelse tel que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ifelse (weight <=x & weight>=y, weight, NA)
Petite particularité :
Le nombre d'observations par jour et par animal n'est pas fixé (cela peut être 10 comme cela peut être 3)

J'ai regardé au niveau des fonctions for et while (correspondance entre n°animal et jour) cela n'aboutit pas à grand chose..

N'hésitez pas à me poser des questions si vous avez des idées, des remarques, si je n'ai pas été clair etc..
Bonne journée,
Cordialement,
Tiphaine