Bonjour,
Je débute avec R. J'ai besoin d'aide pour calculer de manière automatique des "médianes pondérées" (weighted median) par commune.
# Voici un jeu de données (volontairement simpliste). COM = communes ; DIST = distance parcourue par les habitants ; IPONDI = nombre d'habitants concernés (= qui parcourent cette distance)
> donnees
COM DIST IPONDI
AF 115 2
AF 75 2
AF 46 2
AF 45 2
AF 13 8
BE 36 5
BE 35 1
HY 78 16
HY 48 10
HY 41 5
HY 37 2
# Pour calculer ici la distance médiane parcourue les habitants, il faut prendre en compte la colonne de pondération IPONDI. J'ai trouvé deux façons de le faire :
> w.median(donnees$DIST,w=donnees$IPONDI)
[1] 48
> median (rep(donnees$DIST,times=donnees$IPONDI))
[1] 48
# Je cherche maintenant à trouver la distance médiane parcourue non pas sur l'ensemble des communes, mais par commune.
# Je n'arrive pas à trouver la bonne formule pour agréger les données (j'ai essayé avec ddply et aggregate : soit la médiane qui en résule n'est pas "pondérée" par IPONDI, soit elle concerne l'ensemble des communes....).
## NB : Le résultat serait ceci :
COM med
AF 29
BE 36
HY 48
# etant donné les résultats suivants
> median (rep(donnees[1:5,2],times=donnees[1:5,3]))
[1] 29
> median (rep(donnees[6:7,2],times=donnees[6:7,3]))
[1] 36
> median (rep(donnees[8:11,2],times=donnees[8:11,3]))
[1] 48
Je vous remercie,
Partager