J'ai une liste de 10 000 valeurs qui ressemblent à ceci appelant la liste t1 code> et exécuté
somme (t1> quantile (t1 ), 0.8)) Code> Je vous attendrais à obtenir une somme des valeurs de la liste supérieure à la 80e quantile, mais ce que je reçois vraiment est un compte (pas une somme) de toutes les valeurs. p> p>
4 Réponses :
t1> quantile (t (t1), 0,8) code> est une séquence booléenne, c'est-à-dire une séquence de valeurs vraies / fastes (vous pouvez le vérifier facilement). Par conséquent, le
Somme code> de ce vecteur est le nombre d'occurrences de
Voyants code>, c'est-à-dire le nombre d'individus qui satisfont à la condition que vous spécifiez. P>
Merci, mais quelle serait une solution?
Une solution serait la suivante: somme (T1 [T1> Quantile (T (T1), 0,8)]) code>. En faisant cela, vous filtrez d'abord
t1 code> pour ne conserver que les personnes supérieures à un seuil donné, et dans une seconde étape, vous calculez la somme de leurs valeurs.
Essayez ceci:
sum(t1[t1>quantile(t(t1),0.8), ])
Voici un exemple: La deuxième ligne renvoie la somme d'un vecteur booléen ( vrai / faux code>), d'où vous obtenez le nombre (le nombre des fois
true code> se produit). Utilisez P>
sum(df$Point[df$Point > quantile(df$Point, 0.8)])
Vous pouvez utiliser la fonction Si Sincer, qui ajoutera T1 si T1 est au-dessus de votre seuil et 0 sinon
sum(ifelse(t1>quantile(t(t1),0.8),t1,0))
Quel langage de programmation est-ce?
Désolé, la langue est r