Extraction de données d'une matrice selon 3 arguments

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

Lelandais ludovic
Messages : 11
Enregistré le : 20 Fév 2019, 11:11

Extraction de données d'une matrice selon 3 arguments

Messagepar Lelandais ludovic » 21 Fév 2019, 10:01

Bonjour à tous, voilà j'ai actuellement une matrice (data10mfiltre) contenant des mesures toutes les heures sur plusieures années avec 5 colonnes : années, mois, jour , heure, et Co2.

j'ai réussi a sortir une matrice avec les moyennes mensuelles. Les lignes correspondant aux années et les 12 colonnes au 12 mois
avec :
moymois <- tapply(data10mfiltre$co2, list(data10mfiltre$Year, data10mfiltre$Month), mean)

lorsque j'utilise la même fonction pour obtenir des moyennes journalières :

moyjour <- tapply(data10mfiltre$co2,list(data10mfiltre$Year, data10mfiltre$Month, data10mfiltre$Day ), mean )

j'obtient en sortie un format moyjour : [ 1:5, 1:12 ,1:31] que je n'arrive pas à utiliser.

je souhaiterai avoir 5 matrices (une par an) avec en ligne : les mois , et en colonnes les jours (ou inversement peu importe :) )

comment puis je faire pour obtenir ces 5 matrices à partir : soit de ma matrice initiale soit du "vecteur" moyjour créer avez vous une solution s'il vous plait ?

Cordialement.

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

Re: Extraction de données d'une matrice selon 3 arguments

Messagepar Pierre-Yves Berrard » 21 Fév 2019, 10:09

Bonjour,

Petite remarque sur le vocabulaire : j'ai l'impression que vous utilisez le terme matrice pour un data.frame.
Par contre l'objet moyjour : [ 1:5, 1:12 ,1:31] semble être une matrice au sens de R (matrix).
Ça prête un peu à confusion sur ce que vous souhaitez.

Personnellement, je tenterais en premier lieu d'empêcher la simplification du résultat par tapply(..., simplify = FALSE).
Pas sûr que ça marche...
PY

Lelandais ludovic
Messages : 11
Enregistré le : 20 Fév 2019, 11:11

Re: Extraction de données d'une matrice selon 3 arguments

Messagepar Lelandais ludovic » 21 Fév 2019, 12:19

Bonjour, excusez mon erreur de vocabulaire je débute sous R et j'associe systématiquement dans mon esprit un tableau à une matrice et non un data.frame.

en fait le souci que je rencontre est concernant la création de ma matrice moyjour : [ 1:5, 1:12 ,1:31],certaines moyennes sont égales à NA car j'ai des valeurs abérentes que j'ai du retirer, à certaines heures or la fonction mean, s'il y a un NA renvoi un resultat NA.

je cherche donc en fait a organiser mes données dans une matrice ( ou 5 matrice une par année) pour pouvoir calculer les moyenne par jour autrement.

Eric Casellas
Messages : 686
Enregistré le : 06 Jan 2009, 14:59

Re: Extraction de données d'une matrice selon 3 arguments

Messagepar Eric Casellas » 21 Fév 2019, 12:42

Bonjour,

Lelandais ludovic a écrit :la fonction mean, s'il y a un NA renvoi un resultat NA.


Il y a une paramètre optionnel na.rm (=FASLE par défaut) dans la fonction mean qui permet de gérer les valeurs manquantes.

exemple:

Code : Tout sélectionner

mean(c(1,2,NA))
mean(c(1,2,NA), na.rm=TRUE)


Eric
Eric

Logez Maxime
Messages : 2897
Enregistré le : 26 Sep 2006, 11:35

Re: Extraction de données d'une matrice selon 3 arguments

Messagepar Logez Maxime » 21 Fév 2019, 12:55

Bonjour,

l'objet que t'as crée tapply est un array, c'est à dire une matrice a plus de 2 dimensions.
Pour avoir ce que tu souhaites il te faut permuter les dimensions de cet array.
Un exemple avec ton array qui s'appélerait 'res' :

Code : Tout sélectionner

res2 <- aperm(res, c(2, 3, 1))

Dans res2 tu as les mois en ligne, les jours en colonne et les années dans la troisième dimension.
Maintenant si tu veux une année donnée il te faut faire res2[, , i] avec i le numéro de l'année que tu souhaites.

Code : Tout sélectionner

# pour la 3ème année :
res2[, , 3]
Cordialement,
Maxime

Serge Rapenne
Messages : 1311
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Extraction de données d'une matrice selon 3 arguments

Messagepar Serge Rapenne » 21 Fév 2019, 12:57

Bonjour,

Juste une petite remarque.
La commande incontournable de R est "?" ( les journées ou je ne l'invoque pas au moins une fois doivent être rarissime )
faire :

Code : Tout sélectionner

?mean
t'aurais rapidement donnée la solution

Code : Tout sélectionner

mean(x, trim = 0, na.rm = FALSE, ...)

na.rm : a logical value indicating whether NA values should be stripped before the computation proceeds.


Serge

Lelandais ludovic
Messages : 11
Enregistré le : 20 Fév 2019, 11:11

Re: Extraction de données d'une matrice selon 3 arguments

Messagepar Lelandais ludovic » 21 Fév 2019, 13:15

Bonjour à tous,
merci vous êtes géniaux,
quelle rapidité et vraiment super conseil j'ai mieux compris un grand merci :)


Retourner vers « Questions en cours »

Qui est en ligne

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