Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Moyenne par ordre.
2 participants
Page 1 sur 1
Moyenne par ordre.
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.
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 : 226
Date d'inscription : 17/04/2013
Re: Moyenne par ordre.
Re-bonjour,
Voici une solution artisanale :
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
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
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Re: Moyenne par ordre.
oui je le connais ,mais malheureusement mon cas est plus compliqué car le vecteur est un colonne de mon tableau !
FMarwen- Nombre de messages : 226
Date d'inscription : 17/04/2013
Re: Moyenne par ordre.
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 : 226
Date d'inscription : 17/04/2013
Re: Moyenne par ordre.
- 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
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Re: Moyenne par ordre.
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!
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 : 226
Date d'inscription : 17/04/2013
Re: Moyenne par ordre.
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
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Re: Moyenne par ordre.
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é"
?
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 : 226
Date d'inscription : 17/04/2013
Re: Moyenne par ordre.
il faut remplacer :
par :
car effectivement sinon ça ne lit que la première ligne
- 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
Ayana- Nombre de messages : 550
Localisation : Londres
Date d'inscription : 18/08/2009
Re: Moyenne par ordre.
merci bien ç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
}]
[ 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 : 226
Date d'inscription : 17/04/2013
Sujets similaires
» Analyse de données multivariées: Solution du 2nd ordre ACP
» moyenne de moyenne avec ecart type
» Boxplot et ordre.
» Boite de distribution et ordre.
» Loi de Gumbel: détermination des moments d'ordre k
» moyenne de moyenne avec ecart type
» Boxplot et ordre.
» Boite de distribution et ordre.
» Loi de Gumbel: détermination des moments d'ordre k
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum