Comptage des lignes en fonction de la correspondance de conditions multiplesJe veux compter les lignes de mon ensemble de données si 3 colonnes (ABC) correspondent. Je veux entrer la valeur dans une nouvelle colonne (D). Voici un exemple. Merci pour votre aide!
| Colonne A | Colonne B | Colonne C | Colonne D (compte compté) |
| 7 | Z | S | 4 |
| 7 | Z | S | 4 |
| 1 | UN | P | 3 |
| 1 | UN | P | 3 |
| 1 | UN | P | 3 |
| 7 | Z | S | 4 |
| 5 | E | M | 2 |
| 5 | E | M | 2 |
| 7 | Z | S | 4 |
Re : Compter les lignes en fonction de la correspondance de plusieurs conditionsJe suis content de la formule @SP a posté des œuvres pour vous ! Je suis curieux de savoir pourquoi le mien échoue sur votre table actuelle, mais peut-être que notre temps est mieux consacré à votre autre question plutôt qu'à diagnostiquer ce qui n'a pas fonctionné avec ma méthode inférieure à deux colonnes !
Puis-je demander quel problème la création de ce décompte résout ? Il semble que vous vous retrouverez avec une colonne de 1 en faisant cela, car peu importe le nombre d'occurrences du modèle, vous le comptez comme 1. Je ne pense pas saisir pleinement ce que vous voulez faire ou ce que cela vous aide à accomplir. Je pense que si je connaissais l'objectif final, je pourrais suggérer une méthode globale plus simple qu'une série de colonnes de formules.
@julien
Re : Compter les lignes en fonction de la correspondance de plusieurs conditionsJ'ai toujours des problèmes pour que cela fonctionne. La version à 2 équations suggérée par Julian - la première équation me donne tous les 1, donc je ne sais pas ce que je fais de manière incorrecte. La méthode d'équation unique me donne le nombre total de fois qu'un seau particulier apparaît par SOG. L'autre partie que j'essaie toujours d'obtenir est le nombre de fois où je dois saisir un seau. Par exemple, si je saisis un seau et prélève 4 échantillons ou le récupère à nouveau et prélève 19 échantillons, dans chaque cas, je n'ai saisi le seau qu'une seule fois. D'après mon exemple de données, EXULU apparaît 4 fois au total dans le 621 SOG. Je veux créer un décompte qui compterait ces 4 fois comme 1 fois. EH8QK apparaît un total de 19 fois dans le 621 SOG mais je veux aussi les compter tous comme 1. J'espère que cela explique mieux la seconde moitié du problème. Merci!
Re : Compter les lignes en fonction de la correspondance de plusieurs conditionsUne alternative à l'utilisation de deux colonnes pour arriver au nombre serait de compter les lignes de chaque combinaison avec la fonction ColNumber().
Par exemple:
Col Number(Row(), :J1, :SOG, :BUCKET);
</CODE></P>
<P> </P>
<P> </P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-214889" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214889" slang="en-US" mode="NONE"><P>Salut<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14945" target="_blank"> @Sciguy_1</A> ,</P>
<P> </P>
<P>Voici un tableau qui accomplit ce que je pense que vous recherchez, en utilisant les formules que j'ai montrées auparavant mais adaptées à chaque combinaison. Mon calcul pour "# fois BUCKET apparaît par: SOG (réponse correcte)" ne correspond pas à celui que vous avez dit que vous avez créé manuellement, mais je suis à peu près sûr que ce que j'ai fait ici est correct car il correspond à mon propre comptage manuel. Pouvez-vous vérifier et confirmer que je ne manque pas quelque chose?</P>
<P> </P>
<P>Vous remarquerez que vous avez besoin d'un<STRONG> paire de colonnes</STRONG> pour chacun de ces décomptes, un qui compte de manière incrémentielle dans chaque groupement et un autre qui trouve le total. J'ai masqué les colonnes de comptage incrémentiel dans le tableau, mais notez que vous devez les avoir. Vous pouvez généraliser cela à vraiment n'importe quel nombre de combinaisons, vous ajustez simplement les formules comme indiqué ci-dessous pour inclure les bonnes colonnes en tant que groupes par :</P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screen Shot 2019-06-26 at 5.20.49 PM.png" style="width: 374px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Screen Shot 2019-06-26 at 5.20.49 PM.png" style="width: 374px;"><span class="lia-inline-image-display-wrapper" image-alt="Screen Shot 2019-06-26 at 5.20.49 PM.png" style="width: 374px;"><img src="https://us.v-cdn.net/6038925/uploads/images/18030i629C729C275487D5/Screen%20Shot%202019-06-26%20at%205.20.49%20PM.png" role="button" title="Screen Shot 2019-06-26 at 5.20.49 PM.png" alt="Screen Shot 2019-06-26 at 5.20.49 PM.png" /></span></SPAN></SPAN></P>
<P> </P>
<P><SPAN class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screen Shot 2019-06-26 at 5.20.54 PM.png" style="width: 536px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Screen Shot 2019-06-26 at 5.20.54 PM.png" style="width: 536px;"><span class="lia-inline-image-display-wrapper" image-alt="Screen Shot 2019-06-26 at 5.20.54 PM.png" style="width: 536px;"><img src="https://us.v-cdn.net/6038925/uploads/images/18031i3CBC6C15082459EE/Screen%20Shot%202019-06-26%20at%205.20.54%20PM.png" role="button" title="Screen Shot 2019-06-26 at 5.20.54 PM.png" alt="Screen Shot 2019-06-26 at 5.20.54 PM.png" /></span></SPAN></SPAN></P>
<P> </P>
<P>J'espère que cela vous fera avancer,</P>
<P><A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/2026" target="_blank">@julien</A></P></LINGO-BODY><LINGO-SUB id="lingo-sub-214377" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214377" slang="en-US" mode="NONE">Je vois que j'ai fait une erreur. L'en-tête de la dernière colonne jar_id est égal à la colonne J1. J'aimerais également connaître le nombre de fois que T1 se produit par combinaison J1 X SOG X BUCKET. Merci.</LINGO-BODY><LINGO-SUB id="lingo-sub-214361" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214361" slang="en-US" mode="NONE"><P>Vous avez raison, chaque ligne est unique. Voici un sous-ensemble de l'ensemble de données réel. J'ai créé quelques colonnes représentant ce que j'essaie d'accomplir. La colonne "nombre de fois que BUCKET apparaît par SOG" que j'ai remplie manuellement. La valeur NULL peut être traitée comme son propre BUCKET. La deuxième colonne doit indiquer le nombre de fois que J1 apparaît par : combinaison SOG X BUCKET. J'espère que cela facilitera les choses merci pour votre aide.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-214360" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214360" slang="en-US" mode="NONE"><P>Vous avez raison, chaque ligne est unique. Voici un sous-ensemble de l'ensemble de données réel. J'ai créé quelques colonnes représentant ce que j'essaie d'accomplir. La colonne "nombre de fois que BUCKET apparaît par SOG" que j'ai remplie manuellement. La valeur NULL peut être traitée comme son propre BUCKET. La deuxième colonne doit indiquer le nombre de fois que J1 apparaît par : combinaison SOG X BUCKET. J'espère que cela facilitera les choses merci pour votre aide.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-214152" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214152" slang="en-US" mode="NONE"><P>Il semble que chaque ligne de votre table soit unique, donc je m'attendrais à ce que "No. Times Tube se produit par JAR X BUCKET X SOG" soit 1 pour l'ensemble de la table. Ai-je mal compris ce format ?</P>
<P> </P>
<P>De plus, joindre votre tableau de données JMP, ou un sous-ensemble de celui-ci, avec vos formules de colonne intactes sera beaucoup plus utile pour diagnostiquer ce qui se passe, plutôt que de coller le tableau dans le corps du message.</P></LINGO-BODY><LINGO-SUB id="lingo-sub-214149" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214149" slang="en-US" mode="NONE"><P>C'est exactement ce que je veux faire, tu l'as très bien expliqué. Mais en appliquant la formule, je n'obtiens pas les valeurs correctes. Permettez-moi de donner un nouvel exemple juste pour m'assurer que nous sommes sur la même longueur d'onde. Il s'agit d'un ensemble de données très vaste et assez dynamique. J'espère que cela explique mieux et ne confond pas le problème. Merci.</P><P> </P><TABLE border="1"><TBODY><TR><TD><STRONG>TUBE</STRONG></TD><TD><STRONG>POT</STRONG></TD><TD><STRONG>SEAU</STRONG></TD><TD><STRONG>SOG</STRONG></TD><TD><EM><STRONG>No. Times Tube se produit par JAR X BUCKET X SOG</STRONG></EM></TD><TD><U><EM><STRONG>Nombre de fois uniques Jar se produit par seau X combinaison SOG</STRONG></EM></U></TD><TD> </TD></TR><TR><TD>ASX</TD><TD>ABE</TD><TD>WDNH</TD><TD>5001</TD><TD><P>3</P></TD><TD><P>2</P></TD><TD> </TD></TR><TR><TD>VCD</TD><TD>ABE</TD><TD>WDNH</TD><TD>5001</TD><TD>3</TD><TD>2</TD><TD> </TD></TR><TR><TD>KNL</TD><TD>ABE</TD><TD>WDNH</TD><TD>5001</TD><TD>3</TD><TD>2</TD><TD> </TD></TR><TR><TD>NHS</TD><TD>Ben</TD><TD>WDNH</TD><TD>5001</TD><TD>2</TD><TD>2</TD><TD> </TD></TR><TR><TD><P>DDC</P></TD><TD>Ben</TD><TD>WDNH</TD><TD>5001</TD><TD>2</TD><TD>2</TD><TD> </TD></TR><TR><TD>MKD</TD><TD><P>CHAT</P></TD><TD>DEFC</TD><TD>5004</TD><TD>4</TD><TD>1</TD><TD> </TD></TR><TR><TD>KDNName</TD><TD>CHAT</TD><TD>DEFC</TD><TD>5004</TD><TD>4</TD><TD>1</TD><TD> </TD></TR><TR><TD>DMLA</TD><TD>CHAT</TD><TD>DEFC</TD><TD>5004</TD><TD>4</TD><TD>1</TD><TD> </TD></TR><TR><TD>CMD</TD><TD>CHAT</TD><TD>DEFC</TD><TD>5004</TD><TD>4</TD><TD>1</TD><TD> </TD></TR><TR><TD>MDN</TD><TD>CHIEN</TD><TD>DEFC</TD><TD>5007</TD><TD>2</TD><TD>2</TD><TD> </TD></TR><TR><TD>VNF</TD><TD>CHIEN</TD><TD>DEFC</TD><TD>5007</TD><TD>2</TD><TD>2</TD><TD> </TD></TR><TR><TD>RKE</TD><TD><P>ANGUILLE</P></TD><TD>DEFC</TD><TD>5007</TD><TD>5</TD><TD>2</TD><TD> </TD></TR><TR><TD>LKD</TD><TD>ANGUILLE</TD><TD>DEFC</TD><TD>5007</TD><TD>5</TD><TD>2</TD><TD> </TD></TR><TR><TD>KDMName</TD><TD>ANGUILLE</TD><TD>DEFC</TD><TD>5007</TD><TD>5</TD><TD>2</TD><TD> </TD></TR><TR><TD>WLD</TD><TD>ANGUILLE</TD><TD>DEFC</TD><TD>5007</TD><TD>5</TD><TD>2</TD><TD> </TD></TR><TR><TD>KMD</TD><TD>ANGUILLE</TD><TD>DEFC</TD><TD>5007</TD><TD>5</TD><TD>2</TD><TD> </TD></TR><TR><TD>FDL</TD><TD>VOLER</TD><TD>SDER</TD><TD>5008</TD><TD>6</TD><TD>2</TD><TD> </TD></TR><TR><TD>SMK</TD><TD>VOLER</TD><TD>SDER</TD><TD>5008</TD><TD>6</TD><TD>2</TD><TD> </TD></TR><TR><TD>KJM</TD><TD>VOLER</TD><TD>SDER</TD><TD>5008</TD><TD>6</TD><TD>2</TD><TD> </TD></TR><TR><TD>ALD</TD><TD>VOLER</TD><TD>SDER</TD><TD>5008</TD><TD>6</TD><TD>2</TD><TD> </TD></TR><TR><TD>EMI</TD><TD>VOLER</TD><TD>SDER</TD><TD>5008</TD><TD>6</TD><TD>2</TD><TD> </TD></TR><TR><TD>IEJ</TD><TD>VOLER</TD><TD>SDER</TD><TD>5008</TD><TD>6</TD><TD>2</TD><TD> </TD></TR><TR><TD>DFR</TD><TD>ABE</TD><TD>SDER</TD><TD>5008</TD><TD>3</TD><TD>2</TD><TD> </TD></TR><TR><TD>TRE</TD><TD>ABE</TD><TD>SDER</TD><TD>5008</TD><TD>3</TD><TD>2</TD><TD> </TD></TR><TR><TD>ENF</TD><TD>ABE</TD><TD>SDER</TD><TD>5008</TD><TD>3</TD><TD>2</TD><TD> </TD></TR></TBODY></TABLE></LINGO-BODY><LINGO-SUB id="lingo-sub-214145" slang="en-US" mode="NONE">Re : Compter les lignes en fonction de la correspondance de plusieurs conditions</LINGO-SUB><LINGO-BODY id="lingo-body-214145" slang="en-US" mode="NONE"><P>Salut<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/14945" target="_blank"> @Sciguy_1</A> ,</P>
<P> </P>
<P>Je crois que je comprends ce que vous demandez, mais permettez-moi de répéter pour être sûr. Vous souhaitez une nouvelle colonne qui compte le nombre de combinaisons uniques, quel que soit le nombre de fois où ces combinaisons se sont produites ? Dans le sous-ensemble que vous avez fourni, il existe 3 combinaisons uniques des trois colonnes et, comme vous l'avez souligné, l'une des combinaisons s'est produite 4 fois, une autre 3 fois et une autre 2 fois. Une autre façon de dire cela est le nombre de lignes uniques dont vous disposez, tel que défini par les trois premières colonnes. Si c'est bien ce que vous recherchez, la formule de colonne suivante fera l'affaire, qui compte essentiellement le nombre de fois qu'un 1 se produit dans les colonnes "Compter dans les groupes", c'est-à-dire le nombre de groupes uniques :</P>
<P> </P>
<PRE><CODE class=" language-jsl">As Constant(
uniqueRowCount = Summation(
i = 1,
N Row(),
If( :Count In Groups[i] == 1,
1,
0
)
)
);
uniqueRowCount;

J'ai joint le nouveau tableau ici aussi. Est-ce ce que vous cherchiez à faire ?
@julien
Re : Compter les lignes en fonction de la correspondance de plusieurs conditionscréez une nouvelle colonne et utilisez la formule suivante pour la nouvelle colonne
summarize(byGroup=by(:Total in Group));
n items(byGroup)
Re : Compter les lignes en fonction de la correspondance de plusieurs conditionsPour aller plus loin, disons que je voulais ajouter une autre colonne indiquant le nombre de fois qu'une combinaison s'est produite dans un sous-ensemble. Ainsi, dans l'exemple, dans la colonne "total dans le groupe", il y a 4-"4", 3-"3" et 2-"2". Si toutes les lignes (1 à 9) représentaient l'ensemble du sous-ensemble, la réponse dans ce cas serait 3 car un "4" s'est produit, un "3" s'est produit et un "2" s'est produit. Ainsi, dans la nouvelle colonne "total dans le sous-ensemble", chaque ligne aurait un 3. Je n'arrive pas à comprendre comment obtenir des chiffres additionnés de cette manière.
Re : Compter les lignes en fonction de la correspondance de plusieurs conditionsMerci Julian l'approche colonne répond parfaitement à ma demande.Re : Compter les lignes en fonction de la correspondance de plusieurs conditionsSalut @Sciguy_1
Il y a plusieurs façons de procéder. Je pense qu'une approche de colonne de formule est relativement simple, avec deux colonnes, la première, une qui compte les occurrences d'une correspondance de manière incrémentielle, puis une deuxième colonne qui trouve la valeur maximale de ce nombre par groupe, ce que vous appelez un décompte compté ici. Voici à quoi ressemble ce tableau :
Et voici les formules de colonne :
Comptage en groupes par les colonnes utilisées pour une correspondance :
Col Cumulative Sum( 1, :Column A, :Column B, :Column C )
et le Max de cette colonne de comptage, également regroupés par les colonnes utilisées pour une correspondance
Col Maximum( :Count In Groups, :Column A, :Column B, :Column C )
Le tableau est joint pour votre référence.
Alternativement, si vous souhaitez créer un tableau qui répertorie les lignes uniques une seule fois, avec le nombre de fois qu'elles ont été appariées, vous pouvez utiliser Tableaux > Résumé. Entrez dans vos colonnes en tant que groupe et appuyez sur OK. Voici à quoi ressemble cette configuration :

Cela renverra un tableau récapitulatif qui affiche les combinaisons uniques de valeurs dans ces trois colonnes, ainsi qu'une colonne indiquant le nombre d'occurrences dans la table de données. 
Une fois que vous avez ce tableau, vous pouvez sélectionner, puis faire glisser la colonne N lignes du tableau récapitulatif directement dans votre tableau d'origine, et JMP se chargera de toutes les correspondances pour que vous mettiez à jour le tableau d'origine avec ces valeurs. Voici à quoi cela ressemble :
Enfin, le script de création du tableau est également enregistré en tant que script source dans le tableau récapitulatif :
Data Table( "Example.jmp" ) << Summary(
Group( :Column A, :Column B, :Column C ),
Freq( "None" ), Weight( "None" )
)
J'espère que ça aide!
@julien