Les posteurs les plus actifs de la semaine
lenny868
 


Moyenne par ordre.

Aller en bas

Moyenne par ordre.

Message par FMarwen le Ven 19 Avr 2013 - 12:03

Bonjour,

J'ai un vecteur par exemple comme(a<-c(1,3,2,9,6,5,8,4,7) ) est je cherche la moyenne des 3 plus grosses valeurs,
la réponse correspond a notre cas est moyenne(9,8,7)=24/3.

Merci d'avance.

FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par Ayana le Ven 19 Avr 2013 - 12:17

Re-bonjour,

Voici une solution artisanale :

Code:

b<-sort(a, decreasing = T)
mean(b[1:3])

En gros, tu tries ton vecteur par ordre décroissant et tu récupères les 3 premières valeurs sur lesquelles tu calcules la moyenne.

Ayana
avatar
Ayana

Nombre de messages : 491
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par FMarwen le Ven 19 Avr 2013 - 12:27

oui Smile je le connais ,mais malheureusement mon cas est plus compliqué car le vecteur est un colonne de mon tableau !

FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par FMarwen le Ven 19 Avr 2013 - 12:30

et ce que je veux exactement que à chaque Sektion (ou groupe) j'ajoute nvl colonne qui contient la moyenne des trois grosses valeurs par Sektion tjrs !

FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par Ayana le Ven 19 Avr 2013 - 12:40

Code:

for (i in seq(1:nombre_sections)){
a<-tab$variable[tab$Section==i]
b<-sort(a,decreasing=T)
moy<-mean(b[1:3])
if (tab$Section==i){tab$moy_section<-moy}
}

Pour chaque section, on récupère les valeurs dans un vecteur, on trie on calcule la moyennne sur les 3 plus grandes valeurs et on recopie la moyenne dans la table sur les lignes correspondantes
avatar
Ayana

Nombre de messages : 491
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par FMarwen le Ven 19 Avr 2013 - 13:04

merci beaucoup

FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par FMarwen le Sam 20 Avr 2013 - 10:16

Bonjour ,
Dsl , j'ai essayé plusieurs fois avec cette code :
for (i in seq(1:35)){
a<-AST_Baum16$D_V[AST_Baum16$Sektion==i]
b<-sort(a,decreasing=T)
moy<-mean(b[1:3])
if (AST_Baum16$Sektion==i){AST_Baum16$moy_Sektion<-moy}
}
avec (AST_Baum16:mon tableau,D_V: le variable sur le quel je fais la moyenne ,Sektion: colonne de tableau ).

Le problème est que la nvl colonne prend le même valeur(qui est la moyenne des trois plus grands valeurs de D_V dans la Sektion=1) dans tous les autres cases!

FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par Ayana le Sam 20 Avr 2013 - 11:15

Et ce n'était pas le but pour pouvoir faire d'autres calculs après? Du coup j'ai pas dû comprendre ce que tu voulais faire
avatar
Ayana

Nombre de messages : 491
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par FMarwen le Sam 20 Avr 2013 - 11:36

Bonjour,

Normalement le code oui ,mais la résultat obtenue est pas ce que je cherche parceque dans la nvl colonne tous les cases prennent la même moyenne qui correspond à la Sektion=1 !
En plus R m'affiche ce message "Avis dans if (AST_Baum16$Sektion == i) { :
la condition a une longueur > 1 et seul le premier élément est utilisé"
?




FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par Ayana le Mar 23 Avr 2013 - 7:31

il faut remplacer :

Code:

if (AST_Baum16$Sektion==i){AST_Baum16$moy_Sektion<-moy}

par :

Code:

AST_Baum16$moy_Sektion[AST_Baum16$Sektion==i]<-moy}

car effectivement sinon ça ne lit que la première ligne
avatar
Ayana

Nombre de messages : 491
Localisation : Londres
Date d'inscription : 18/08/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

Message par FMarwen le Jeu 25 Avr 2013 - 7:21

merci bien Smile ça marche avec ce code:

[ j<-1
i<-1
repeat{
a<-AST_Baum16$D_V[AST_Baum16$Sektion==i]
b<-sort(a,decreasing=T)
moy<-mean(b[1:3])
while (AST_Baum16[j,3] == i) { AST_Baum16[j,16]<-moy
j<-j+1
}
if (i>35) break
i<-i+1
}]

FMarwen

Nombre de messages : 223
Date d'inscription : 17/04/2013

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Moyenne par ordre.

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