Conditionnel somme (R)

Je suis en train de créer une somme conditionnelle, afin de calculer une moyenne. L'idée est qu'une fonction (ou une applique déclaration) vérifie si une certaine valeur est true (par exemple x > 0), alors la somme de toutes les valeurs de x où supérieures à zéro. La dernière étape serait de diviser cette somme par le nombre d'instances qui sont supérieures à zéro. Recherche pour conditionnels somme(ming) ne m'a donné de l'information utilisable.

C'est une partie des données:

> tmpData
   Instrument TradeResult.Currency.
1         JPM                    -3
2         JPM                   264
3         JPM                   284
4         JPM                    69
5         JPM                   283
11        KFT                    -8
12        KFT                   -48
13        KFT                   125
14        KFT                  -150
15        KFT                  -206
16        KFT                   107

Des fonctions que j'ai essayé, la suite la plus prometteuse:

avgProfit <- function(x) {
    ifelse(x > 0,
    sum(x) / length(which(x > 0)),
    return(0))
    }

Cependant, la sortie de cette fonction est 0:

> with(tmpData, tapply(TradeResult.Currency., Instrument, avgProfit))
JPM KFT 
  0   0     
> avgProfit(tmpData$TradeResult.Currency.)
[1] 0
> x
 [1] 1 1 2 1 2 3 3 3 4 4

(Les valeurs doivent être 225 pour JPM (total de 900 divisé par 4 des cas où une plus grande que zéro) et 116 pour KFT)

Même si je calcule la somme de x (qui, si je comprends bien, devrait être la somme des valeurs individuelles dans les données.image) dans la fonction, la sortie de la variable " x " qui m'intrigue, c'. Je ne peux pas trouver où ces 1,2,3 et fours sont venant de.

Comment puis-je calculer une somme conditionnelle? D'ailleurs, je dois utiliser une fonction ou suis-je en faire trop compliqué (il y a peut être une accumulation de la fonction R pour ce dont j'ai oublié?)

Toutes les pensées sont plus que bienvenus,

Ce qui concerne,

Si l'Instrument ne joue aucun rôle ici, non?
Salut Romain, non, l'instrument joue un rôle pour le calcul de la moyenne par instrument (c'est à dire la moyenne de JPM, et un pour KFT). Je pense que le sous-ensemble de la solution de Kohske est une solution élégante pour cette. Merci pour votre commentaire/intérêt!

OriginalL'auteur Jura | 2010-12-06