'n' ligne moyenne d'une colonne basée sur une condition d'une autre colonne -Salut tout le monde,
Je recherche la moyenne de 'n' rangées (dans l'exemple ci-joint, n == 3) basée sur d'autres colonnes (-- "Customer_ID"). Si mon numéro de ligne pour chaque groupe (client) est un multiplicateur entier de 'n', c'est-à-dire [Ligne == Constante entière xn]. Ma formule de base fonctionne très bien. Mais si Row != Integer Constant xn, il prend les lignes restantes de l'autre groupe. Ce qui me donne de mauvais résultats.
Ce que je veux -
Meilleur cas - Calculez la moyenne de 'n' lignes sur une sorte de sous-ensemble de données basé sur Ctomer_ID et pour les dernières lignes restantes, mettez la valeur moyenne à partir de la valeur moyenne précédente.
Sinon, laissez les valeurs vides telles quelles.
J'ai essayé de mettre :Customer_ID != Lag(:Customer_ID, -2) mais cela n'a pas fonctionné pour moi. Je peux diviser la table sur Customer_ID puis faire le calcul mais - il y a plus de 5000 ID et environ 20 colonnes pour la moyenne à faire. Cela ne semble pas la meilleure idée !
Une aide s'il vous plait ?
Merci.

ScriptRe : moyenne de 'n' lignes d'une colonne basée sur une condition d'une autre colonne -Voici la formule que j'ai trouvé

If( Row() == 1 | :Customer_ID != Lag( :Customer_ID ),
count = 0
);
If( count == 3, count = 0 );
count = count + 1;
If(
count == 1,
currentAvg = Col Moving Average( :Value, 1, before = 0, after = 2, :Customer_ID );
display = currentAvg;,
:Customer_ID == Lag( :Customer_ID, -2 ), display = .,
display = currentAvg
);
display;
Vous devez prendre le temps de lire le Scripting Guide qui se trouve dans la bibliothèque de documentation JMP disponible dans le menu déroulant Aide !
Re : moyenne de 'n' lignes d'une colonne basée sur une condition d'une autre colonne -Aucune idée si cela fonctionnera dans tous les cas, mais cela fonctionne avec les exemples de données fournis :
If(Col Cumulative Sum(1, :Customer_ID) > Col Number(:Value, :Customer_ID) - 1,
Lag(Col Moving Average(:Value, 1, 0, 2, 0, :Customer_ID), 1),
If(Modulo(Col Cumulative Sum(1, :Customer_ID), 3) == 1,
Col Moving Average(:Value, 1, 0, 2, 0, :Customer_ID),
.
)
)
Vérifiez ce que chacune des fonctions/formules fait à partir de l'index de script/guide de script tandis que vérifier le résultat de la sous-expression sélectionnée à partir de l'éditeur de formule pour comprendre ce qu'il fait car c'est assez compliqué :
