Moyenne de température en fonction de multiples critères

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

Morgane Labadie
Messages : 12
Enregistré le : 11 Oct 2016, 20:32

Moyenne de température en fonction de multiples critères

Messagepar Morgane Labadie » 24 Oct 2016, 22:30

Bonjour à tous,

Tout d'abord voici un aperçu de ma data frame de départ :

Date Site.id Meso.id Canopy Hydro Luminosity Temp.min Temp.max Day.mean Pluviometrie
1 14/06/2016 1 1 Open Full 77.0 -5 30 12,5 69.80
2 14/06/2016 1 2 Open Full 83.0 -2 30 14 69.80
3 14/06/2016 1 3 Closed Full 1.0 2 26 14 19.00
4 14/06/2016 1 4 Closed Full 2.0 1 24 12,5 19.00
5 14/06/2016 2 17 Open Full 91.0 -2 25 11,5 57.10
6 14/06/2016 2 18 Open Full 91.0 -3 26 11,5 57.10
7 14/06/2016 2 19 Closed Full 0.5 2 15 8,5 50.80
8 14/06/2016 2 20 Closed Full 1.0 7 14 10,5 50.80
9 14/06/2016 3 9 Open Full 88.0 0 27 13,5 64.20
10 14/06/2016 3 10 Open Full 87.0 6 22 14 64.20
11 14/06/2016 3 11 Closed Full 0.2 3 17 10 44.30
12 14/06/2016 3 12 Closed Full 1.0 3 18 10,5 44.30
13 14/06/2016 4 13 Open Full 81.0 0 28 14 63.50
14 14/06/2016 4 14 Open Full 86.0 -3 25 11 63.50
15 14/06/2016 4 15 Closed Full 1.0 -5 17 6 38.10
16 14/06/2016 4 16 Closed Full 2.0 3 17 10 38.10
17 14/06/2016 5 5 Open Full 91.0 12 25 18,5 76.20
18 14/06/2016 5 6 Open Full 92.0 10 25 17,5 76.20
19 14/06/2016 5 7 Closed Full 2.0 5 17 11 31.75
20 14/06/2016 5 8 Closed Full 2.0 5 17 11 31.75
21 14/06/2016 6 21 Open Full 92.0 -2 23 10,5 63.50
22 14/06/2016 6 22 Open Full 92.0 -1 24 11,5 63.50
23 14/06/2016 6 23 Closed Full 4.0 -1 20 9,5 38.40
24 14/06/2016 6 24 Closed Full 2.0 1 NA 1 38.40
25 17/06/2016 1 1 Open Full 77.0 13 26 19,5 0.00
26 17/06/2016 1 2 Open Full 83.0 15 28 21,5 0.00
27 17/06/2016 1 3 Closed Full 1.0 9 22 15,5 0.00
28 17/06/2016 1 4 Closed Full 2.0 8 15 11,5 0.00
29 17/06/2016 2 17 Open Full 91.0 14 29 21,5 0.00
30 17/06/2016 2 18 Open Full 91.0 15 31 23 0.00
31 17/06/2016 2 19 Closed Full 0.5 7 17 12 0.00
32 17/06/2016 2 20 Closed Full 1.0 7 15 11 0.00
33 17/06/2016 3 9 Open Full 88.0 0 33 16,5 0.00
34 17/06/2016 3 10 Open Full 87.0 15 30 22,5 0.00
35 17/06/2016 3 11 Closed Full 0.2 9 20 14,5 0.00
36 17/06/2016 3 12 Closed Full 1.0 2 22 12 0.00
37 17/06/2016 4 13 Open Full 81.0 15 29 22 0.00
38 17/06/2016 4 14 Open Full 86.0 -3 31 14 0.00
39 17/06/2016 4 15 Closed Full 1.0 7 18 12,5 0.00
40 17/06/2016 4 16 Closed Full 2.0 9 15 12 0.00
41 17/06/2016 5 5 Open Full 91.0 15 28 21,5 0.00
42 17/06/2016 5 6 Open Full 92.0 14 30 22 0.00
43 17/06/2016 5 7 Closed Full 2.0 11 16 13,5 0.00
44 17/06/2016 5 8 Closed Full 2.0 10 17 13,5 0.00
45 17/06/2016 6 21 Open Full 92.0 11 29 20 0.00
46 17/06/2016 6 22 Open Full 92.0 10 29 19,5 0.00
47 17/06/2016 6 23 Closed Full 4.0 5 22 13,5 0.00
48 17/06/2016 6 24 Closed Full 2.0 7 NA 7 0.00
49 20/06/2016 1 1 Open Full 77.0 17 26 21,5 1.50
50 20/06/2016 1 2 Open Full 83.0 18 28 23 1.50
51 20/06/2016 1 3 Closed Full 1.0 15 26 20,5 0.00
52 20/06/2016 1 4 Closed Full 2.0 12 20

Je voudrais faire une moyenne par semaine de ma température en fonction de période particulière (date) pour chacun de mes numéros de Meso.id. Par exemple, je voudrais faire la moyenne du Meso.id 1 pour la première période de temps (du 14/06/16 au 17/06/16) à l'aide de la colonne Day.mean.

En tout j'ai 746 lignes et 12 périodes de temps. Je tiens a préciser qu'au cours du temps certains numéro de Méso vont disparaitre car ils sont arrêtés dans mon expérience et je n'ai donc plus besoin de prendre la température.

Je dois avouer etre complètement perdu de comment commencer. Auriez vous des idées ?

Merci d'avance pour vos réponses

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Re: Moyenne de température en fonction de multiples critères

Messagepar Nicolas Péru » 25 Oct 2016, 06:55

Bonjour,

Voir toutes les fonctions qui traitent les données par bloc e.g.: by, aggregate, tapply et les fonctions dans des packages dédiés tels que plyr, dplyr ou encore data.table.

Il y a de nombreux exemples sur le forum.

Si tu as des difficultés sur un de tes critères (problème de format par exemple), reviens vers nous.

HTH.

Nicolas

Morgane Labadie
Messages : 12
Enregistré le : 11 Oct 2016, 20:32

Re: Moyenne de température en fonction de multiples critères

Messagepar Morgane Labadie » 25 Oct 2016, 13:39

Merci

Morgane Labadie
Messages : 12
Enregistré le : 11 Oct 2016, 20:32

Re: Moyenne de température en fonction de multiples critères

Messagepar Morgane Labadie » 25 Oct 2016, 17:43

Après avoir regardé les différents commentaires, j'ai décidé de créer une colonne supplémentaire Période.

# Conversion de la colonne de facteur a date
Temp2$Date <- as.Date(x=Temp2$Date, format = "%d/%m/%Y")
str(Temp2)
# Creation d'une colonne periode pour la temperature (12 semaines = 12 periodes)
Temp2$Periode <- NA

# Ajout dans la colonne periode des valeurs en fonction de la date
Temp2$Periode[Temp2$Date >= as.Date("2016-06-14")& Temp2$Date <= as.Date("2016-06-17")] <- 1
Temp2$Periode[Temp2$Date >= as.Date("2016-06-20")& Temp2$Date <= as.Date("2016-06-24")] <- 2
Temp2$Periode[Temp2$Date >= as.Date("2016-06-27")& Temp2$Date <= as.Date("2016-07-1")] <- 3
Temp2$Periode[Temp2$Date >= as.Date("2016-07-4")& Temp2$Date <= as.Date("2016-07-8")] <- 4
Temp2$Periode[Temp2$Date >= as.Date("2016-07-11")& Temp2$Date <= as.Date("2016-07-15")] <- 5
Temp2$Periode[Temp2$Date >= as.Date("2016-07-18")& Temp2$Date <= as.Date("2016-07-22")] <- 6
Temp2$Periode[Temp2$Date >= as.Date("2016-07-25")& Temp2$Date <= as.Date("2016-07-29")] <- 7
Temp2$Periode[Temp2$Date >= as.Date("2016-08-1")& Temp2$Date <= as.Date("2016-08-5")] <- 8
Temp2$Periode[Temp2$Date >= as.Date("2016-08-8")& Temp2$Date <= as.Date("2016-08-12")] <- 9
Temp2$Periode[Temp2$Date >= as.Date("2016-08-15")& Temp2$Date <= as.Date("2016-08-19")] <- 10
Temp2$Periode[Temp2$Date >= as.Date("2016-08-22")& Temp2$Date <= as.Date("2016-08-26")] <- 11
Temp2$Periode[Temp2$Date >= as.Date("2016-08-29")& Temp2$Date <= as.Date("2016-08-31")] <- 12

Ainsi j'ai pu obtenir le fichier suivant :

Date Site.id Meso.id Canopy Hydro Luminosity Temp.min Temp.max Day.mean Pluviometrie Periode
1 2016-06-14 1 1 Open Full 77.0 -5 30 12,5 69.80 1
2 2016-06-14 1 2 Open Full 83.0 -2 30 14 69.80 1
3 2016-06-14 1 3 Closed Full 1.0 2 26 14 19.00 1
4 2016-06-14 1 4 Closed Full 2.0 1 24 12,5 19.00 1
5 2016-06-14 2 17 Open Full 91.0 -2 25 11,5 57.10 1
6 2016-06-14 2 18 Open Full 91.0 -3 26 11,5 57.10 1
7 2016-06-14 2 19 Closed Full 0.5 2 15 8,5 50.80 1
8 2016-06-14 2 20 Closed Full 1.0 7 14 10,5 50.80 1
9 2016-06-14 3 9 Open Full 88.0 0 27 13,5 64.20 1
10 2016-06-14 3 10 Open Full 87.0 6 22 14 64.20 1
11 2016-06-14 3 11 Closed Full 0.2 3 17 10 44.30 1
12 2016-06-14 3 12 Closed Full 1.0 3 18 10,5 44.30 1


# Code pour calculer les moyennes par periode en fonction des mesocosmes

Essai3 <- tapply(Temp2$Periode, Temp2$Meso.id, mean(Temp2$Day.mean))

Essai4 <- data.frame (Temp2 %>% group_by(Meso.id, Periode == "1") %>% summarise_each(funs(mean(Day.mean))))

J'ai des messages d'erreur pour les deux. Pouvez vous m'expliquer ce que je fais de faux ?

Merci

Morgane

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Re: Moyenne de température en fonction de multiples critères

Messagepar Nicolas Péru » 28 Oct 2016, 07:26

Bonjour,

Essai3 <- tapply(Temp2$Periode, Temp2$Meso.id, mean(Temp2$Day.mean))

le code devrait être :

Code : Tout sélectionner

Essai3 <- tapply(Temp2$Day.mean, list(Temp2$Periode, Temp2$Meso.id), mean)



Essai4 <- data.frame (Temp2 %>% group_by(Meso.id, Periode == "1") %>% summarise_each(funs(mean(Day.mean))))

le code devrait être:

Code : Tout sélectionner

Essai4 <- data.frame (Temp2 %>% group_by(Meso.id, Periode) %>% summarise_each(funs(mean),Day.mean)))


NB : Je n'ai pas fait tourner ces lignes pour voir d'éventuelles erreurs de syntaxe

Nicolas

Morgane Labadie
Messages : 12
Enregistré le : 11 Oct 2016, 20:32

Re: Moyenne de température en fonction de multiples critères

Messagepar Morgane Labadie » 28 Oct 2016, 15:58

Merci, en effet ça marche maintenant pour essai 3


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités