0
votes

R - Je ne comprends pas pourquoi mon code génère un compte plutôt qu'une somme

J'ai une liste de 10 000 valeurs qui ressemblent à ceci xxx

appelant la liste t1 et exécuté somme (t1> quantile (t1 ), 0.8)) 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.


2 commentaires

Quel langage de programmation est-ce?


Désolé, la langue est r


4 Réponses :


1
votes

t1> quantile (t (t1), 0,8) 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 de ce vecteur est le nombre d'occurrences de Voyants , c'est-à-dire le nombre d'individus qui satisfont à la condition que vous spécifiez.


2 commentaires

Merci, mais quelle serait une solution?


Une solution serait la suivante: somme (T1 [T1> Quantile (T (T1), 0,8)]) . En faisant cela, vous filtrez d'abord t1 pour ne conserver que les personnes supérieures à un seuil donné, et dans une seconde étape, vous calculez la somme de leurs valeurs.



1
votes

Essayez ceci:

sum(t1[t1>quantile(t(t1),0.8), ])


0 commentaires

1
votes

Voici un exemple: xxx pré>

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)])


0 commentaires

1
votes

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))


0 commentaires