Countif équivalent ?J'essaie de trouver une fonction de formule JMP équivalente à la fonction Countif d'Excel, qui pointe vers une colonne et renvoie le nombre de lignes identiques à la valeur de la ligne actuelle, comme vous l'obtiendriez si vous faisiez un résumé sur cette ligne. .
En d'autres termes, si j'ai un tableau de 1 000 lignes et que la couleur de la colonne est définie sur "Violet" sur 27 lignes, je veux une formule pour une nouvelle ligne qui renvoie 27 pour ces lignes (et la valeur applicable pour les autres lignes).
(Je suis sûr que c'est ici, mais **bip** si je peux le trouver)
JMP 17, MacOS
Personnalisation de masseRe : Countif équivalent ?Fermer, je pense. Je n'ai jamais été dans ce code C++, mais je crois que dès le tout premier appel (généralement pour la ligne 1), il prétraite toutes les lignes pour mettre en cache toutes les réponses possibles par valeur. Ensuite, toutes les lignes suivantes reçoivent une réponse à partir de ce cache par valeur. (Sans le cache, ce serait un temps d'ordre (N ^ 2) pour N lignes, avec le cache juste un temps d'ordre (N) - linéaire.)
Re : Countif équivalent ?Cela a du sens, mais la fonction Col Sum() parcourt quelque chose...
J'imagine qu'il parcourt les lignes qui correspondent à la valeur actuelle dans les colonnes byVar, en évaluant l'expression pour chacune d'elles, puis en additionnant tous les résultats de ces évaluations.
Ai-je bien raison ?Si tel est le cas, cette formulation m'aurait été très utile dans la documentation de l'index de script Col Sum().
Re : Countif équivalent ?Considérez le premier argument comme une expression. Une expression peut être
- 42
- :hauteur
- :taille *2 > :poids
- si ( :taille *2 > :poids, âge, 99 )
- si ( :hauteur>60 & :poids> 100, 1, 0 )
Tous ces éléments sont évalués dans le contexte de la ligne actuelle, donc en utilisant les valeurs de taille, de poids et d'âge de la ligne actuelle. L'opérateur > renvoie 1 pour vrai et 0 pour faux, ce qui peut également être additionné. Le if est évalué à l'âge ou à 99 sur chaque ligne et cela est additionné. Et le simple fait d'utiliser :height est également évalué pour renvoyer la valeur de la ligne actuelle.
J'avoue, j'ai regardé @jthi exemple pendant une minute avant de l'avoir. Si vous intégrez cela dans le code, ajoutez un commentaire pour celui qui devra le maintenir ensuite !
Re : Countif équivalent ?@Craige_Hales Ainsi, si la première entrée est un objet de colonne, la fonction Col Sum() parcourt les valeurs de la colonne (en respectant le paramètre byVar) en additionnant les valeurs, mais si la première entrée n'est qu'un nombre, elle l'utilise simplement ?
La première entrée peut-elle être une expression qui renvoie une valeur ?
Peut-il également renvoyer une liste qui est parcourue de manière similaire à la fourniture d'un objet colonne ?Que se passe-t-il si la longueur de cette liste ne correspond pas à la longueur de la liste byVar ?
Ce comportement interne de JMP est fascinant et j'aimerais en savoir plus, mais je ne trouve rien dans la documentation pour m'aider à développer un modèle mental de ce qu'il fait dans des cas comme celui-ci...
Notez que countif est une fonction Excel qui compte tous les éléments d'une plage de cellules répondant à certains critères.Je ne pense pas que Col Sum() fasse exactement cela, il ne semble pas y avoir de moyen de l'utiliser pour compter le nombre de cas où col1 > 7 et col2 == 15, par exemple.
Re : Countif équivalent ?@Audrey_Shull peut-être le @jthi Un exemple peut être ajouté à l'index de script avec une explication, quelque chose comme "Le premier argument de la formule de colonne est une expression qui est évaluée pour chaque ligne. Il s'agit généralement d'une colonne qui additionne les valeurs de la colonne, mais dans cet exemple, il s'agit d'une constante 1 qui totalise le nombre de lignes. C'est utile dans cet exemple car le deuxième argument est la colonne par, ce qui fait que les sommes sont pour chaque valeur."
L'ajout du mot-clé countif pourrait aider quelqu'un à le trouver à l'avenir (je ne maîtrise pas Excel, alors cherchez peut-être d'abord countif...)
Re : Countif équivalent ?Il utilise 1 pour la valeur de la ligne au lieu d'une valeur spécifique trouvée dans la ligne d'une colonne.
Edit : Dans ce cas, je pense que l'utilisation de Col Number(:Column 1, :Column 1) devrait également fonctionner.
Re : Countif équivalent ?@jthi : Le texte d'aide indique que le premier argument de Col Sum() est "xCol", mais vous n'avez qu'un "1" dedans.Que fait JMP avec ce numéro 1 ici ?
(C'est très utile, nous avons également eu cette question aujourd'hui.)
Re : Countif équivalent ?De quel texte d'aide parlez-vous et qu'est-ce qui n'est pas intuitif ?Col Sum(nom,)
Également à partir de Scripting Index (trouvé dans le menu Aide de JMP), vous pouvez obtenir des scripts de démonstration exécutables qui peuvent parfois être utiles.

Re : Countif équivalent ?Exactement - merci !
(et le texte d'aide JMP sur Col Sum n'est certainement pas intuitif...)
Re : Countif équivalent ?Quelque chose comme ça?

Col Sum(1, :Column 1)