Calculer une moyenne pondéré en fonction de groupes

Aller en bas

Calculer une moyenne pondéré en fonction de groupes Empty Calculer une moyenne pondéré en fonction de groupes

Message par damgui le Mer 22 Mai 2013 - 14:55

Bonjour,
J'ai un jeu de données constitué de 3 colonnes. La première est le nom des produits, la seconde est le prix et la troisième est le nombre de produit.
Donc un jeu de données comme celui la :

Produit Prix Quantité
a 10 100
a 20 120
a10 50
b 25 3
b 14 90
c30 100
c25 58
c 5 69
c 5 23

Je voudrais calculer la moyenne du prix pondéré à la quantité pour chaque produit. Je voudrais passer à un tableau comme celui la:

a 25 250
b 30 300
c 20 200

J'ai essayer avec la fonction apply mais je n'y arrive pas.

Merci beaucoup
PS : Je précise que les chiffres des tableaux sont faux

damgui

Nombre de messages : 39
Age : 29
Date d'inscription : 14/06/2012

Voir le profil de l'utilisateur http://www.apprenti-webmarketeur.com

Revenir en haut Aller en bas

Calculer une moyenne pondéré en fonction de groupes Empty Re: Calculer une moyenne pondéré en fonction de groupes

Message par droopy le Jeu 23 Mai 2013 - 8:27

bonjour,
Quand on travail avec des facteurs il est préférable d'utiliser des fonctions comme aggregate, tapply que apply.
Un exemple avec la librairie plyr :
Code:
require(plyr)
tab
  Produit Prix Quantité
1      a  10      100
2      a  20      120
3      a  10      50
4      b  25        3
5      b  14      90
6      c  30      100
7      c  25      58
8      c    5      69
9      c    5      23

ddply(tab, .(Produit), summarize, Mean=weighted.mean(Prix, Quantité), Quantité=sum(Quantité))
  Produit    Mean Quantité
1      a 14.44444      270
2      b 14.35484      93
3      c 19.64000      250
Avec du classique :
Code:
auxi <- tapply(1:nrow(tab), tab$Produit, function(x) with(tab[x,], c(weighted.mean(Prix, Quantité), sum(Quantité))))
do.call("rbind", auxi)
      [,1] [,2]
a 14.44444  270
b 14.35484  93
c 19.64000  250
droopy
droopy

Nombre de messages : 1126
Date d'inscription : 04/09/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Calculer une moyenne pondéré en fonction de groupes Empty Re: Calculer une moyenne pondéré en fonction de groupes

Message par damgui le Jeu 23 Mai 2013 - 15:00

Merci beaucoup droopy, ça marche parfaitement !

damgui

Nombre de messages : 39
Age : 29
Date d'inscription : 14/06/2012

Voir le profil de l'utilisateur http://www.apprenti-webmarketeur.com

Revenir en haut Aller en bas

Calculer une moyenne pondéré en fonction de groupes Empty Re: Calculer une moyenne pondéré en fonction de groupes

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum