Calcolo condizionale del numero di colonneFor 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>Vorrei aggiungere <SPAN>due nuove colonne PN Count di RANK_DEC =1, PN Count di RANK_ASC=1. Ci sono formule da applicare?</SPAN></P>
<SPAN>Ci sono altri metodi migliori per approcciarsi? Grazie mille in anticipo!</SPAN></LI>
</OL></LINGO-BODY><LINGO-LABS id="lingo-labs-870410" slang="en-US" mode="CREATE"><LINGO-LABEL>Analisi e modellazione dei dati di base</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-870421" slang="en-US" mode="UPDATE">Re: Calcolo condizionale del numero di colonne</LINGO-SUB><LINGO-BODY id="lingo-body-870421" slang="en-US" mode="UPDATE"><P>Per il calcolo condizionale, JMP fornisce le funzioni di aggregazione <FONT face="courier new,courier">Col XYZ()</FONT> .<BR /> Per il conteggio, puoi usare <FONT face="courier new,courier">Col Number().</FONT> Conta tutte le voci non mancanti.<FONT face="courier new,courier"><BR /></FONT> Per convertire le righe non corrispondenti in "mancanti", è necessario qualcosa come <FONT face="courier new,courier">Somma colonna (if(Rank_ASC==1 ,1,.),:Part_Number).<BR /></FONT> Se Rank è 1, l'espressione <FONT face="courier new,courier">Se</FONT> restituisce 1, per le altre righe restituirà "." (mancante) e JMP non conta la riga.<BR /><BR /> Dopo un primo argomento per l'input numerico, è possibile specificare colonne aggiuntive (ed espressioni) per specificare byGroups.<BR /> Con <FONT face="courier new,courier">:Numero_parte</FONT> come secondo argomento, JMP creerà conteggi separati per ogni :Part_Number.<BR /><BR /> Preferisco <FONT face="courier new,courier">Col Sum().<BR /></FONT> Per contare righe specifiche, puoi usare un confronto come <FONT face="courier new,courier">Somma colonna (Rank_ASC==1 , :Part_Number ).<BR /></FONT> L'idea alla base dell'espressione:<BR /> Per le righe con <FONT face="courier new,courier">rango 1,</FONT> il risultato del confronto <FONT face="courier new,courier">Rank_ASC==1</FONT> è 1, per le altre righe il risultato è 0.<BR /> Quindi, <FONT face="courier new,courier">col somma</FONT> conterà tutte le righe con rank=1.<BR /> Qui, usiamo di nuovo <FONT face="courier new,courier">:Numero_parte</FONT> come secondo argomento. Quindi, i conteggi saranno separati per i diversi Part_Number.<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 ) ) )
)
Re: Calcolo condizionale del numero di colonnemi dispiace per la mia affermazione poco chiara.
Ecco le mie aspettative: ad esempio, nel gruppo "P40051", Part_number di Rank_ASC_1 == "T770", il conteggio di "T770" in questo gruppo è 2, cosa simile, Part_number di Rank_DESC_1 == "T772", il conteggio di "T772" in questo gruppo è 1. Nel gruppo "Q40040", Part_number di Rank_ASC_1 e Part_number di Rank_DESC_1 == "T770", il conteggio di Part_number di Rank_DESC_1 o il conteggio di "T770" in questo gruppo è 1. Ecco il risultato previsto nelle 2 colonne di destra.

allegato il file dati per verifica.
Re: Calcolo condizionale del numero di colonneAh, right, I mixed up the
For each ID group
with
Per ogniPart_Numbergruppo
Re: Calcolo condizionale del numero di colonneQuesto codice dovrebbe funzionare:
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 ) ),
),
Con l'opzione << tie(minimum) , ogni riga con il Part_Number di Rango 1 avrà Rango=1, in modo che tutte le righe di questo tipo vengano conteggiate. In questo caso, possiamo saltare il passaggio intermedio del calcolo del Rango.
Re: Calcolo condizionale del numero di colonneSenza il < < ont> opzione, le righe aggiuntive con lo stesso ID/Part_Number otterranno ranghi incrementali.
Qui puoi usare Col min( ) per replicare le informazioni Rank=1 in tutte le righe dello stesso ID/Part_number:
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>Con questo approccio <FONT face="courier new,courier">conteggio_Rank_ASC</FONT> e <FONT face="courier new,courier">conteggio_Rank_DESC</FONT> possono essere costruiti con un codice simile:</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 ))
)
)
Re: Calcolo condizionale del numero di colonneNella mia tabella, la colonna "RANK_ASC" è presente, non sono sicuro che sia definita dalla colonna Rank(:Part_Number, :ID). Ma preferisco basarmi sul valore di RANK_ASC (RANK_ASC==1) per trovare lo specifico Part_Number, quindi aspettarmi che la formula appropriata calcoli il conteggio dei Part_number in questo gruppo. Nella tua formula, non ho idea di come << tie(minimum) possa correlarsi a RANK_ASC (RAN_ASC==1). A proposito, qual è la formula per RANK_DESC==1?
Re: Calcolo condizionale del numero di colonneEcco un'opzione (ce ne sono molte altre)
Col Sum(:Part_Number == :Part_Number[Col Min(If(:RANK_ASC == 1, Row(), .), :ID)], :ID) //change :RANK_ASC to RANK_DESC for other formula

Questo tipo di formula che utilizza Col Min/Max, If() e Row() può essere molto utile.
Si noti che potrebbe non funzionare in qualsiasi versione futura di JMP, poiché queste funzioni non sono progettate per essere utilizzate in questo modo. Nella speranza di evitare che JMP commetta un errore enorme, ho creato questa voce nella lista dei desideri : utilizzare le espressioni di formula in Imposta ogni valore e utilizzare le espressioni come primo argomento in Col, per supportare il comportamento delle formule statistiche.
Re: Calcolo condizionale del numero di colonnePer RANK_DESC=1, sono sicuro che si può impostare una formula complicata con << tie.
Molto più semplice: usa il secondo approccio:
https://community.jmp.com/t5/Discussions/Conditional-Column-number-calculation/mp/870429/highlight/true#M103370
Se non ti piace/non ti fidi dell'opzione << tie() , usa il secondo approccio.
Se Rank_ASC e RANK_DESC sono già presenti nella tabella, questo è un buon motivo per usare il secondo approccio. Non è necessario calcolare le colonne autonomamente.
Re: Calcolo condizionale del numero di colonneGrazie per il tuo supporto, funzionaRe: Calcolo condizionale del numero di colonneBenvenuto.