Autour de la fonction AGGREGATE

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

Diakaria Korera
Messages : 18
Enregistré le : 07 Juin 2018, 15:51

Autour de la fonction AGGREGATE

Messagepar Diakaria Korera » 02 Aoû 2018, 11:22

Bonjour,
J'ai besoin d'un coup de pouce pour pouvoir calculer le nombre d'événements A par mois pour un capteur donné.
Mon jeu de données se présente comme suit:

Code : Tout sélectionner

a=seq(as.Date("2000/1/1"), by = "day", length.out = 1000)
n=20
date=sample(a,n)
tab=structure(list(
  capteur1 = structure(sample(1:2,size =n,replace = T), .Label = c('A','B'), class = "factor"),
  capteur2 = structure(sample(1:2,size =n,replace = T), .Label = c('A','B'), class = "factor"),
  capteur3 = structure(sample(1:2,size =n,replace = T), .Label = c('A','B'), class = "factor")),
  .Names = c("capteur1","capteur2","capteur3"), class = "data.frame", row.names = c(NA,-20L))
tab=cbind(date,tab)
tab

Pour le capteur 3 par exemple, j'aimerai avoir un résultat du genre:
Mois Annee Nbr A
XX YYYY n1
TT ZZZZ n2
................
J'ai essayé de le faire avec la fonction 'aggregate':

Code : Tout sélectionner

annee=substr(tab$date,1,4)
mois=substr(tab$date,6,7)
jour=substr(tab$date,9,10)
aggregate(tab$capteur3,list(mois,annee),FUN)
# FUN étant la fonction que je recherche


Merci !
Diakaria
Université Claude Bernard Lyon1

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

Re: Autour de la fonction AGGREGATE

Messagepar Pierre-Yves Berrard » 02 Aoû 2018, 12:07

Si c'est juste un comptage, ne serait-il plus simple d'utiliser la fonction table (ou une fonction comme dplyr::count) ?
PY

Diakaria Korera
Messages : 18
Enregistré le : 07 Juin 2018, 15:51

Re: Autour de la fonction AGGREGATE

Messagepar Diakaria Korera » 02 Aoû 2018, 13:18

En fait je souhaiterai compter le nombre d'événements A pour chaque mois du capteur3 par exemple.
Avec la fonction 'table' ça me renvoie juste le nombre total de chaque facteur.
Merci !
Diakaria
Université Claude Bernard Lyon1

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Re: Autour de la fonction AGGREGATE

Messagepar Stéphane Adamowicz » 02 Aoû 2018, 13:35

Bonjour,

essayez quand même, mais de la façon suivante, en combinant aggregate et table

Code : Tout sélectionner

tab$annee <- substr(tab$date,1,4)
tab$mois <- substr(tab$date,6,7)
aggregate(capteur3 ~ mois + annee, tab, table)
Stéphane Adamowicz
INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)
domaine St Paul, site agroparc
84914 Avignon, cedex 9

Diakaria Korera
Messages : 18
Enregistré le : 07 Juin 2018, 15:51

Re: Autour de la fonction AGGREGATE

Messagepar Diakaria Korera » 02 Aoû 2018, 13:44

Merci Stéphane,
Là ça résout mon problème !
Merci
Diakaria
Université Claude Bernard Lyon1

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

Re: Autour de la fonction AGGREGATE

Messagepar Serge Rapenne » 02 Aoû 2018, 14:20

Bonjour,

Il n'est pas indispensable d'extraire mois et annee :

Code : Tout sélectionner

aggregate(capteur3 ~ format(date,"%Y-%m"), tab, table)


Serge

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

Re: Autour de la fonction AGGREGATE

Messagepar Pierre-Yves Berrard » 02 Aoû 2018, 15:12

Le data.frame créé par aggregate dans les exemples précédents est un peu exotique : sa dernière colonne une est une matrice (faire un dput pour s'en convaincre).

Pourquoi pas ?

Code : Tout sélectionner

table(
  mois = format(tab$date,"%Y-%m"),
  capteur3 = tab$capteur3
)
PY

Diakaria Korera
Messages : 18
Enregistré le : 07 Juin 2018, 15:51

Re: Autour de la fonction AGGREGATE

Messagepar Diakaria Korera » 10 Aoû 2018, 13:43

Merci pour tous vos réponses :) !
Diakaria
Université Claude Bernard Lyon1


Retourner vers « Questions en cours »

Qui est en ligne

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