Équivalent JMP de la fonction COUNTIF d'ExcelJ'essaie d'imiter ce comportement de type Excel :
| | A | B |
| 1 | échecType | numFailuresCeType |
| 2 | f1 | =countif($a$2:$a$999,a2) |
| 3 | f2 | =countif($a$2:$a$999,a3) |
| 4 | f1 | =countif($a$2:$a$999,a4) |
| 5 | f1 | =countif($a$2:$a$999,a5) |
| 6 | f2 | =countif($a$2:$a$999,a6) |
| ... | ... | ... |
... dans JMP. Est-ce possible en tant que formule de colonne ?
J'ai essayé "Col Sum( :failureType == :failureType[ Row() ] )" mais cela ne fonctionne pas et je ne comprends pas pourquoi. Parfois, ":ColumnName" renvoie une valeur unique, et d'autres fois, il renvoie la valeur entière de la colonne des entrées et effectue une boucle automatique sur celles-ci. Existe-t-il un moyen de savoir ce qu'il fera, peut-être à partir de l'index de script ?
Analyse et modélisation de données de baseRe: Équivalent JMP de la fonction COUNTIF d'Excel
Peut-être Col Sum de 1 par failuretype ?
Col Sum(1, :FailureType)
Ici, la colonne 6 a la formule Col Sum(1, :age)

Re: Équivalent JMP de la fonction COUNTIF d'ExcelOuais, ça marchera probablement.
Pourquoi ma fonction Col Sum(...) n'a-t-elle pas fonctionné ? Row() est-elle également mise à jour en interne à chaque étape ?
Re: Équivalent JMP de la fonction COUNTIF d'ExcelCréez une colonne avec juste Row() et vous verrez ce qu'elle renvoie

Vous pouvez faire la même chose pour
:failureType[Row()]
et pour
:failureType
et enfin pour
:failureType == :failureType[Row()]
pour voir ce que vous obtiendrez (vous comparez la valeur de ligne actuelle du type d'échec à la valeur de ligne actuelle du type d'échec avec juste une syntaxe différente, qui est presque toujours 1).
Re: Équivalent JMP de la fonction COUNTIF d'ExcelL'autre option est Col Number()
Col Number(:FailureType, :FailureType)
Re: Équivalent JMP de la fonction COUNTIF d'ExcelCes réponses ont répondu directement à votre question sur une fonction qui fonctionne comme Excel. Vous pouvez également utiliser Tableau > Résumé, Analyser > Tabuler et Graphique > Générateur de graphiques pour les résumés sans utiliser de colonne de formule si c'est là que vous vous dirigez.
Re: Équivalent JMP de la fonction COUNTIF d'ExcelCette formule semble également fonctionner :
Names Default to Here(1);
n1 = :failureType;
Col Sum( :failureType == n1 )
Il semble que dans la fonction Col Sum, il est prévu d'itérer sur des listes, de manière similaire à la réalisation d'une boucle for en Python sur des variables zippées, mais dans la 2e ligne, il récupère simplement la valeur de :failureType de la ligne actuelle. Ces types de comportements implicites sont incroyablement utiles, mais seulement si l'utilisateur comprend comment ils fonctionnent.
Re: Équivalent JMP de la fonction COUNTIF d'ExcelWaouh. C'est assez surprenant. Je ne m'attendais pas à ce que ça fonctionne de cette façon.
Comment l'as-tu découvert ?
Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "ColSum1",
Formula(
Col Sum( :age == 12 );
)
);
New Column( "ColSum2",
Formula(
twelve = 12;
Col Sum( :age == twelve );
)
);
New Column( "ColSum3",
Formula(
myAGE = :age;
Col Sum( :age == myAGE );
)
);
New Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
Re: Équivalent JMP de la fonction COUNTIF d'Excelarticle connexe avec quelques parallèles : Équivalent Countif ?
mais sans la magie de @BHarris : )
Re: Équivalent JMP de la fonction COUNTIF d'ExcelMême si cela semble fonctionner, je ne l'utiliserais pas (je pense que cela devrait être bien si cela nécessitait que vous ayez :failureType comme byvar). Je pense que c'est une sorte de comportement involontaire (encore plus que l'utilisation de 1 qui ne devrait pas non plus être autorisée selon le support JMP, mais espérons que JMP ne casse jamais cela
Effectuez l'utilisation d'expressions de formule dans Définir chaque valeur et l'utilisation d'expressions comme premier argument dans les formules statistiques Col (comportement pris en charge ).
Vous pouvez le signaler au support JMP et essayer de voir s'ils peuvent fournir une explication technique sur les raisons pour lesquelles cela fonctionne comme cela. Vous pouvez également essayer d'utiliser d'autres comparaisons de manière similaire

Re: Équivalent JMP de la fonction COUNTIF d'Excel@hogi Ce n'est probablement pas aussi magique qu'il y paraît - le premier argument de Col Sum est une expression, et dans ce cas, puisque n1 est précalculé (probablement défini sur la valeur de la ligne actuelle en raison du contexte), et les expressions == semblent renvoyer 1 ou 0, il s'agit donc simplement d'additionner un tas de 1 où la valeur de la colonne est égale à n1 et 0 sinon.
Ce qui est un peu magique pour moi, c'est que parfois, dans les formules de colonnes, JMP parcourt les lignes d'une colonne lorsqu'elles sont saisies sous la forme ":columnName" et d'autres fois, il extrait uniquement la valeur de cette colonne dans la ligne actuelle. Cela m'est resté mystérieux depuis la discussion sur cet autre fil.
Je suppose que la fonction Col Number() est la plus appropriée à utiliser dans ce cas, elle met probablement en cache plus proprement que cela.
Franchement, je ne savais pas que Col Number() existait. J'ai passé la majeure partie de ma vie d'adulte sur Excel, donc j'aimerais qu'il y ait quelque part un mappage des fonctions Excel vers les fonctions JMP.
Re: Équivalent JMP de la fonction COUNTIF d'ExcelNew Column( "ColSum4",
Formula(
myAGE = :age;
myname= :name;
Col Sum( show(myname,myAge,:name,:age,"-");:age == myAGE );
)
);
est assez illustratif. Col cumulative se comporte un peu différemment de ce que je pensais.
J'ai supposé que Col Sum évalue l'argument une fois, puis regroupe/collecte les résultats selon groupBy.
Mais en fait :
La formule est évaluée pour chaque ligne, au total 40x pour les lignes RWx.
Et à chaque itération, Col Sum évalue son argument 40 fois - pour chaque ligne RWy.
Je suppose qu'il essaie de mettre en cache le résultat et n'évaluera pas à nouveau l'argument pour d'autres RWx s'il peut être sûr que ce sera le même résultat.
Mais dans le cas de Show() ou :age = myAGE, il doit être évalué encore et encore.
-> au total 40 x 40 fois.
donc, par exemple pour la ligne RWx = 3 (myName = Jane), il évalue l'argument 40 fois.
Et pour 8 des 40 RWy, :age == myAge donne 1. Donc Col Sum est 8 pour la ligne 3.
En conséquence, la somme des colonnes est égale à 3 pour la ligne 40.
Re: Équivalent JMP de la fonction COUNTIF d'Excel
@jthi a écrit :
Même si cela semble fonctionner, je ne l'utiliserais pas (je pense que cela devrait être bien si cela nécessitait que vous ayez :failureType comme byvar). Je pense que c'est une sorte de comportement involontaire (encore plus que l'utilisation de 1 qui ne devrait pas non plus être autorisée selon le support JMP, mais espérons que JMP ne casse jamais cela
Effectuez l'utilisation d'expressions de formule dans Définir chaque valeur et l'utilisation d'expressions comme premier argument dans les formules statistiques Col (comportement pris en charge ).
Je me sens également beaucoup plus en confiance si une fonctionnalité est documentée - en quelque sorte protégée contre une suppression soudaine...
JMP doit déterminer s'il est possible de mettre en cache les résultats. Qui connaît la logique ?
Ici, JMP pense qu'il est acceptable d'utiliser les données mises en cache :
t0 = hptime();
New Column( "test",
Formula(
wait(0.1);
Col Sum( hp time() )
),
);
current data table() << run formulas();
show((hptime()-t0)/1000000)
Re: Équivalent JMP de la fonction COUNTIF d'Excel@BHarris
@BHarris a écrit :
parfois, dans les formules de colonne, JMP parcourt les lignes d'une colonne lorsqu'elles sont saisies sous la forme ":columnName"
Pouvez-vous donner un exemple ?
Re: Équivalent JMP de la fonction COUNTIF d'ExcelBien sûr, ouvrez BigClass.jmp et ajoutez une colonne avec cette formule :
Somme des colonnes ( :taille * :poids, :sexe )