Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

Calculer une moyenne pondéré en fonction de groupes

2 participants

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 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 : 34
Date d'inscription : 14/06/2012

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 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 : 1156
Date d'inscription : 04/09/2009

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 Jeu 23 Mai 2013 - 15:00

Merci beaucoup droopy, ça marche parfaitement !

damgui

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

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