Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Baptiste drouin
Messages : 16
Enregistré le : 21 Sep 2015, 06:21

Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Baptiste drouin » 16 Juin 2017, 12:43

Bonjour,

Ne sachant pas comment nommer ce que je veux réaliser je ne suis pas parvenus à trouver de l'aide sur ce forum ou ailleurs. De fait, si un problème similaire a déjà été exposé je suis navré d'avoir reposé la question.

A l'occasion d'un suivi je suis amener à poser des dispositifs de captures durant 48h. Je relève les paramètres environnementaux à la pose, après 24h et à 48h. Je fais cette opération sur deux sites différents les mêmes jours et je répète toute cette opération plusieurs fois par site.

Je me retrouve avec une base de donnée similaire à celle ci:

Code : Tout sélectionner

a<-c("2014-04-08","2014-04-09","2014-04-10","2014-04-08","2014-04-09","2014-04-10")
b<-c("A","A","A","B","B","B")
c<-c(5,10,8,9,11,10)
d<-c( 40,42,41,52,56,63)
Data<-data.frame(Date=a, Site=b, Parametre1=c, Parametre2=d)

Afin de voir si il existe un lien entre les paramètres mesurés et le nombre de capture je souhaite obtenir une data similaire mais qui contiendrait sur une ligne la date du jour de capture, le nom du site, les moyennes des paramètres.
Pour mon exemple voici le résultat souhaité:

Code : Tout sélectionner

a1<-c("2014-04-09","2014-04-10","2014-04-09","2014-04-10")
b1<-c("A","A","B","B")
c1<-c(7.5,9,10,10.5)
d1<-c(41,41.5,54,59.5)
Data1<-data.frame(Date=a1, Site=b1, MoyParametre1=c1, MoyParametre2=d1)

Le soucis est que je ne vois pas comment y parvenir, avec mes connaissances actuelles, sans recourir à une multitude de lignes de commandes...
Existe t'il une fonction? Es ce que je dois la créer?

Je remercie donc d'avance pour toutes les informations que vous voudrez bien partager.

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Pierre-Yves Berrard » 16 Juin 2017, 13:05

Baptiste drouin a écrit :data similaire mais qui contiendrait sur une ligne la date du jour de capture, le nom du site, les moyennes des paramètres

Pour un paramètre donné, la valeur pour un jour est la moyenne de la valeur à ce jour et la valeur de la veille, c'est ça ?
PY

Baptiste drouin
Messages : 16
Enregistré le : 21 Sep 2015, 06:21

Re: Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Baptiste drouin » 16 Juin 2017, 13:09

Oui c'est ça

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Pierre-Yves Berrard » 16 Juin 2017, 13:21

Une proposition en utilisant le package dplyr et en particulier la fonction lag() :

Code : Tout sélectionner

library(dplyr)

Data %>%
  arrange(Site, Date) %>%
  group_by(Site) %>%
  mutate(
    MoyParametre1 = (lag(Parametre1) + Parametre1) / 2,
    MoyParametre2 = (lag(Parametre2) + Parametre2) / 2
  ) %>%
  filter(!is.na(MoyParametre1)) %>%
  select(-Parametre1, -Parametre2)
PY

Baptiste drouin
Messages : 16
Enregistré le : 21 Sep 2015, 06:21

Re: Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Baptiste drouin » 16 Juin 2017, 13:59

Ca marche pour l'exemple, malgré ce message d'erreur
"Error in select(., -Parametre1, -Parametre2) :
unused argument (-Parametre2)"

...savez vous ce qu'il signifie?

Il me reste à décortiquer et comprendre ce que vous avez fait pour l'appliquer à ma vraie data.
Merci de votre réponse rapide

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Pierre-Yves Berrard » 16 Juin 2017, 16:49

Baptiste drouin a écrit :Ca marche pour l'exemple, malgré ce message d'erreur
"Error in select(., -Parametre1, -Parametre2) :
unused argument (-Parametre2)"

...savez vous ce qu'il signifie?

Non, chez moi ça ne le fait pas. Quelle version de dplyr ?

Baptiste drouin a écrit :Il me reste à décortiquer et comprendre ce que vous avez fait pour l'appliquer à ma vraie data.

Premièrement il y a l'utilisation du "pipe" (%>%) qui permet d'enchaîner les opérations sans avoir à imbriquer les fonctions. Du coup, le programme se lit dans l'ordre des lignes :
1. arrange : tri par Site et Date (juste par Date aurait certainement suffi)
2. group_by : définit un groupe par Site, les opérations suivantes se feront pour chacun des groupes
3. mutate : ajout de deux colonnes, contenant la moyenne du paramètre de la ligne concernée et celui de la ligne précédente.
4. et 5. filter et select : supprime lignes et variables inutiles
PY

Baptiste drouin
Messages : 16
Enregistré le : 21 Sep 2015, 06:21

Re: Calcul et sortie d'une nouvelle base de donnée sous multiples conditions

Messagepar Baptiste drouin » 19 Juin 2017, 07:43

J'ai la version 0.5.0. Le problème a disparu, peut être lié au chargement de mes autres packages...

Merci pour l'explication, de mon coté j'attaque la lecture de la documentation sur ce package que vous m'avez fait découvrir.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité