IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Moyenne pondérée lignes/colonnes


Sujet :

R

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Moyenne pondérée lignes/colonnes
    Bonjour à tous !

    Alors je dispose de deux dataframes Y et V du format suivant :

    D'abord Y
    Nom : zddzdz.JPG
Affichages : 625
Taille : 67,2 Ko

    Puis V
    Nom : zaedazdz.JPG
Affichages : 656
Taille : 71,2 Ko

    L'idée c'est créer une autre dataframe contenant la moyenne pondérée de ces deux éléments par années. Je m'explique :
    Il s'agit concrètement de faire (Y[1,1] x V[1,1])+(Y[1,2] x V[2,1]) et... Puis on reproduit la même chose avec la seconde colonne de V jusqu'à obtenir nos 4 colonnes de résultats.

    Comment puis-je effectuer cette opération avec le moins de lignes possibles ? J'en ai une avec plein de boucle imbriquées mais ca devient vite la pagaille.

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Bonjour,
    L'idée pour tout faire en quelques lignes:

    Il faut d'abord prendre la transposée de Y

    Ensuite les deux matrices Y et V ont le même nombre de lignes -chaque ligne correspond à une date-, et on peut donc les acoller:

    Enfin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    apply(Z[,-c("CS1","CS2","CS3","CS4")],2,function(x){ (sum(x*Z$CS1) /sum(Z$CS1)}) #moyenne executée sur chaque pays suivant la pondération CS1 pour les dates
    apply(Z[,-c("CS1","CS2","CS3","CS4")],2,function(x){sum(x*Z$CS2) /sum(Z$CS2)})  #idem CS2
    apply(Z[,-c("CS1","CS2","CS3","CS4")],2,function(x){sum(x*Z$CS3) /sum(Z$CS3)}) 
    apply(Z[,-c("CS1","CS2","CS3","CS4")],2,function(x){sum(x*Z$CS4) /sum(Z$CS4)})

    Et tu as tes 4 colonnes de résultats.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Moyenne en ligne ou colonne d'un tableau
    Par papaministre dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 06/06/2013, 21h21
  2. Moyenne pondérée VBA nbre lignes variables
    Par Piloute69 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2010, 16h37
  3. Moyenne d'une colonne à k Lignes
    Par rsoul dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/06/2008, 10h42
  4. Moyenne pondérée
    Par Tijee dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/01/2006, 22h13
  5. est il possible d'inverser ligne/colonne ?
    Par kiki26 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 25/01/2005, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo