Bedingte Berechnung der SpaltenanzahlFor each ID group in the data table, I like to calculate:
-
The count of Part Number where RANK_DESC = 1
-
The count of Part Number where RANK_ASC = 1 </CODE></STRONG></P>
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><span class="lia-inline-image-display-wrapper" image-alt="ReliabilityWolf_0-1745749897393.png" style="width: 400px;"><img src="https://us.v-cdn.net/6038925/uploads/images/75219iB37346FFBB9C212B/ReliabilityWolf_0-1745749897393.png" role="button" title="ReliabilityWolf_0-1745749897393.png" alt="ReliabilityWolf_0-1745749897393.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN>
<P>Ich möchte <SPAN>zwei neue Spalten hinzufügen: PN-Anzahl von RANK_DEC =1, PN-Anzahl von RANK_ASC=1. Gibt es irgendwelche Formeln, die man dafür anwenden kann?</SPAN></P>
<SPAN>Gibt es andere, bessere Methoden? Vielen Dank im Voraus!</SPAN></LI>
</OL></LINGO-BODY><LINGO-LABS id="lingo-labs-870410" slang="en-US" mode="CREATE"><LINGO-LABEL>Grundlegende Datenanalyse und -modellierung</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-870421" slang="en-US" mode="UPDATE">Betreff: Bedingte Berechnung der Spaltenanzahl</LINGO-SUB><LINGO-BODY id="lingo-body-870421" slang="en-US" mode="UPDATE"><P>Für bedingte Berechnungen stellt JMP die Aggregatfunktionen <FONT face="courier new,courier">Spalte XYZ()</FONT> bereit.<BR /> Zum Zählen können Sie <FONT face="courier new,courier">Col Number() verwenden.</FONT> Es zählt alle nicht fehlenden Einträge.<FONT face="courier new,courier"><BR /></FONT> Um nicht übereinstimmende Zeilen in „fehlende“ Zeilen umzuwandeln, benötigen Sie etwas wie <FONT face="courier new,courier">Spaltensumme (wenn(Rank_ASC==1 ,1,.),:Teilenummer).<BR /></FONT> Wenn der Rang 1 ist, gibt der <FONT face="courier new,courier">if-</FONT> Ausdruck 1 zurück, für die anderen Zeilen wird „.“ (fehlend) zurückgegeben – und JMP zählt die Zeile nicht.<BR /><BR /> Nach einem ersten Argument für die numerische Eingabe können Sie zusätzliche Spalten (und Ausdrücke) angeben, um byGroups anzugeben.<BR /> Mit <FONT face="courier new,courier">:Teilenummer</FONT> als zweitem Argument erstellt JMP separate Zählungen für jede :Part_Number.<BR /><BR /> Ich bevorzuge <FONT face="courier new,courier">Spaltensumme().<BR /></FONT> Um bestimmte Zeilen zu zählen, können Sie einen Vergleich wie <FONT face="courier new,courier">Col sum (Rank_ASC==1 , :Part_Number ) verwenden.<BR /></FONT> Die Idee hinter dem Ausdruck:<BR /> Für Zeilen mit <FONT face="courier new,courier">Rang 1</FONT> ist das Ergebnis des Vergleichs <FONT face="courier new,courier">Rank_ASC==1</FONT> 1, für die anderen Zeilen ist das Ergebnis 0.<BR /> Daher zählt <FONT face="courier new,courier">die Spaltensumme</FONT> alle Zeilen mit Rang=1.<BR /> Hier verwenden wir erneut <FONT face="courier new,courier">:Teilenummer</FONT> als zweites Argument. Die Zählung erfolgt also für die verschiedenen Part_Numbers separat.<BR /><BR /></P>
<PRE><CODE class=" language-jsl">New Table( "parts",
Add Rows( 7 ),
New Column( "ID",
Character,
Set Values( {"U30372", "W30569", "W30569", "Q40040", "P40051", "P40051", "P40051"} )
),
New Column( "Part_Number",
Character,
Set Values( {"T772", "T772", "T772", "T772", "T770", "T772", "T770"} )
),
New Column( "Rank_ASC", Formula( Col Rank( :Part_Number, :ID ) ) ),
New Column( "PN_Count_Rank_ASC",
Formula( Col Sum( :Rank_ASC == 1, :Part_Number ) ),
Set Display Width( 156 )
),
New Column( "RANK_DESC",
Formula( (Col Number( :Part_Number, :ID ) - Col Rank( :Part_Number, :ID )) + 1 )
),
New Column( "PN_Count_Rank_DESC", Formula( Col Sum( :RANK_DESC == 1, :Part_Number ) ) )
)
Betreff: Bedingte Berechnung der Spaltenanzahlentschuldigen Sie meine unklare Aussage.
hier ist meine Erwartung: zum Beispiel, in der Gruppe „P40051“, Teilenummer von Rank_ASC_1 == „T770“, die Anzahl von „T770“ in dieser Gruppe ist 2, ähnliches, Teilenummer von Rank_DESC_1 == „T772“, die Anzahl von „T772“ in dieser Gruppe ist 1. in der Gruppe „Q40040“, Teilenummer von Rank_ASC_1 und Teilenummer von Rank_DESC_1 == „T770“, die Anzahl von Teilenummer von Rank_DESC_1 oder die Anzahl von „T770“ in dieser Gruppe ist 1. hier ist mein erwartetes Ergebnis in den rechten 2 Spalten.

Die Datendatei ist zur Überprüfung angehängt.
Betreff: Bedingte Berechnung der SpaltenanzahlAh, right, I mixed up the
For each ID group
with
Für jedenPart_NumberGruppe
Betreff: Bedingte Berechnung der SpaltenanzahlDieser Code sollte funktionieren:
New Table( "parts",
Add Rows( 7 ),
New Column( "ID",
Character,
Set Values( {"U30372", "W30569", "W30569", "Q40040", "P40051", "P40051", "P40051"} )
),
New Column( "Part_Number",
Character,
Set Values( {"T772", "T772", "T772", "T772", "T770", "T772", "T770"} )
),
New Column( "Rank_ASC", Formula( Col Rank( :Part_Number, :ID ) ) ),
New Column( "PN_Count_Rank_ASC=1",
Formula( Col Sum( Col Rank(:Part_Number, :ID,<< tie(minimum)) ==1, :ID ) ),
),
Mit der Option << tie(minimum) erhält jede Zeile mit der Teilenummer Rang 1 den Rang 1, sodass alle Zeilen dieser Art gezählt werden. In diesem Fall können wir den Zwischenschritt der Rangberechnung überspringen.
Betreff: Bedingte Berechnung der SpaltenanzahlOhne das < < ont> Option: Zusätzliche Zeilen mit der gleichen ID/Teilenummer erhalten inkrementelle Ränge.
Hier können Sie Spalte min( ) verwenden, um die Rank=1-Information in allen Zeilen derselben ID/Teilenummer zu replizieren:
get the minimum rank of the combination :Part_Number / :ID :
Col Minimum( :RANK_ASC,:Part_Number, :ID)
if this min rank is 1, mark the row:
Col Minimum( ... ) == 1
for these rows, the result is 1, all the other rows get 0
for every ID, count the 1s:
Col sum( ... , :ID )</CODE></LI>
</UL>
<P><SPAN>Mit diesem Ansatz können <FONT face="courier new,courier">Anzahl_Rank_ASC</FONT> und <FONT face="courier new,courier">count_Rank_DESC</FONT> mit einem ähnlichen Code erstellt werden:</SPAN></P>
<PRE><CODE class=" language-jsl">New Table( "parts",
Add Rows( 7 ),
New Column( "ID",
Character,
Set Values( {"U30372", "W30569", "W30569", "Q40040", "P40051", "P40051", "P40051"} )
),
New Column( "Part_Number",
Character,
Set Values( {"T772", "T772", "T772", "T772", "T770", "T772", "T770"} )
),
New Column( "Rank_ASC", Formula( Col Rank( :Part_Number, :ID ) ) ),
New Column( "PN_Count_Rank_ASC=1",
Formula( Col sum(Col Minimum( :RANK_ASC,:Part_Number, :ID) ==1, :ID ))
),
New Column( "RANK_DESC",
Formula( (Col Number( :Part_Number, :ID ) - Col Rank( :Part_Number, :ID )) + 1 )
),
New Column( "PN_Count_Rank_DESC=1",
Formula( Col sum(Col Minimum( :RANK_DESC,:Part_Number, :ID) ==1, :ID ))
)
)
Betreff: Bedingte Berechnung der Spaltenanzahlin meiner Tabelle befand sich die Spalte „RANK_ASC“ dort drüben. Ich bin nicht sicher, ob sie durch die Spalte „Rank(:Part_Number, :ID)“ definiert ist. Ich möchte aber die spezifische Part_Number anhand des Werts von RANK_ASC (RANK_ASC==1) ermitteln und dann von der entsprechenden Formel die Anzahl der Part_numbers in dieser Gruppe berechnen lassen. In Ihrer Formel habe ich keine Ahnung, wie << tie(minimum) mit RANK_ASC (RAN_ASC==1) korreliert. Übrigens, wie lautet die Formel für RANK_DESC==1?
Betreff: Bedingte Berechnung der SpaltenanzahlHier ist eine Option (es gibt auch viele andere Optionen)
Col Sum(:Part_Number == :Part_Number[Col Min(If(:RANK_ASC == 1, Row(), .), :ID)], :ID) //change :RANK_ASC to RANK_DESC for other formula

Diese Art von Formel, die Col Min/Max, If() und Row() verwendet, kann sehr nützlich sein.
Beachten Sie, dass es in zukünftigen Versionen von JMP zu Problemen kommen kann, da diese Funktionen nicht für diese Verwendung vorgesehen sind. Um JMP vor einem massiven Fehler zu bewahren, habe ich diesen Wunschlisteneintrag erstellt . Die Verwendung von Formelausdrücken in „Set Each Value“ und die Verwendung von Ausdrücken als erstes Argument in „Col“ (Statistische Formeln) unterstützt das Verhalten.
Betreff: Bedingte Berechnung der SpaltenanzahlFür RANK_DESC=1 bin ich sicher, dass man mit << tie eine kompliziertere Formel aufstellen kann.
Viel einfacher: Verwenden Sie den zweiten Ansatz:
https://community.jmp.com/t5/Discussions/Conditional-Column-number-calculation/mp/870429/highlight/true#M103370
Wenn Ihnen die Option << tie() nicht gefällt/Sie ihr nicht vertrauen, verwenden Sie den zweiten Ansatz.
Wenn Rank_ASC und RANK_DESC bereits in der Tabelle vorhanden sind, ist dies ein gutes Argument für den zweiten Ansatz. Sie müssen die Spalten nicht selbst berechnen.
Betreff: Bedingte Berechnung der SpaltenanzahlDanke für eure Unterstützung, es funktioniertBetreff: Bedingte Berechnung der SpaltenanzahlWillkommen.