IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Ma valeur est elle comprise dans l'intervalle x/y


Sujet :

R

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Ma valeur est elle comprise dans l'intervalle x/y
    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 : 2052
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 : 2046
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

  2. #2
    Membre actif
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Points : 284
    Points
    284
    Par défaut
    Bonjour,

    regarder du côté de la fonction merge. Un exemple avec deux colonnes pour faire la jointure : https://stackoverflow.com/questions/...on-two-columns

    Bonne journée

  3. #3
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut
    Bonjour,

    Citation Envoyé par tiftif29 Voir le message
    J'ai ordonné mon data_frame selon le n° de l'animal et aussi le jour à l'aide de la ligne de code suivante :
    FIO1 <- FIO [order(FIO[,1],decreasing=FALSE),]
    Ici vous ne triez que sur la première variable, c'est-à-dire le numéro de l'animal, pas sur le jour.

    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 ne comprends pas votre remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > df1 <- data.frame(id=c(1,1,1,2,2,2))
    > df1
      id
    1  1
    2  1
    3  1
    4  2
    5  2
    6  2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > df2 <- data.frame(id=c(1,2),poids=c(38,42))
    > df2
      id poids
    1  1    38
    2  2    42
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > df <- merge(df1,df2,by="id")
    > df
      id poids
    1  1    38
    2  1    38
    3  1    38
    4  2    42
    5  2    42
    6  2    42
    J'ai regardé au niveau des fonctions for et while (correspondance entre n°animal et jour) cela n'aboutit pas à grand chose..
    Vous pouvez regarder cette discussion pour résoudre le problème avec une boucle.

    Cordialement,

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour ,

    Merci beaucoup pour vos réponses. J'ai trouvé la solution grâce à vous !

    J'ai trouvé cette solution dans la fonction merge! j'avais oublié de mettre entre guillemets l'argument by. Merci vraiment, ça m'a bien aidé, problème résolu donc !


    A très vite,
    Cordialement,
    Tiphaine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/05/2017, 00h52
  2. [MySQL] Savoir si date est comprise dans un intervalle
    Par xillibit dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 05/12/2012, 12h55
  3. Réponses: 9
    Dernier message: 09/10/2012, 21h46
  4. La valeur n'est pas comprise dans la plage attendue.
    Par Sophie64 dans le forum SharePoint
    Réponses: 1
    Dernier message: 03/05/2010, 16h52
  5. Verifier qu'une valeur est comprise dans un intervalle
    Par wizo_nac dans le forum Prolog
    Réponses: 7
    Dernier message: 23/06/2009, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo