條件列數計算For 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>我喜歡新增<SPAN>兩個新列 RANK_DEC 的 PN 計數 =1,RANK_ASC 的 PN 計數=1。有什麼公式可以適用於它們嗎?</SPAN></P>
<SPAN>還有其他更好的方法嗎?非常感謝!</SPAN></LI>
</OL></LINGO-BODY><LINGO-LABS id="lingo-labs-870410" slang="en-US" mode="CREATE"><LINGO-LABEL>基礎資料分析與建模</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-870421" slang="en-US" mode="UPDATE">回覆:條件列號計算</LINGO-SUB><LINGO-BODY id="lingo-body-870421" slang="en-US" mode="UPDATE"><P>對於條件計算,JMP 提供了<FONT face="courier new,courier">列 XYZ()</FONT>聚合函數。<BR />為了計數,您可以使用<FONT face="courier new,courier">Col Number()。</FONT>它計算任何未遺失的條目。<FONT face="courier new,courier"><BR /></FONT>要將不匹配的行轉換為“缺失”,您需要類似<FONT face="courier new,courier">Col sum (if(Rank_ASC==1 ,1,.),:Part_Number) 的內容。<BR /></FONT>如果 Rank 為 1,則<FONT face="courier new,courier">如果</FONT>表達式傳回 1,對於其他行,它將傳回「。」(缺失)- 並且 JMP 不計算該行。<BR /><BR />在數字輸入的第一個參數之後,您可以指定附加列(和表達式)來指定 byGroups。<BR />使用<FONT face="courier new,courier">:零件編號</FONT>作為第二個參數,JMP 將為每個 :Part_Number 建立單獨的計數。<BR /><BR />我比較喜歡<FONT face="courier new,courier">Col Sum()。<BR /></FONT>要計算特定行的數量,您可以使用類似<FONT face="courier new,courier">Col sum (Rank_ASC==1 , :Part_Number ) 的比較。<BR /></FONT>這個表達背後的想法是:<BR />對於<FONT face="courier new,courier">秩為 1 的行,</FONT>比較<FONT face="courier new,courier">Rank_ASC==1</FONT>的結果為 1,對於其他行,結果為 0。<BR />因此, <FONT face="courier new,courier">科爾薩姆</FONT>將計算所有 rank=1 的行。<BR />在這裡,我們再次使用<FONT face="courier new,courier">:Part_Number</FONT>作為第二個參數。因此,對於不同的 Part_Numbers,計數將是分開的。<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 ) ) )
)
回覆:條件列號計算抱歉我的表述不清楚。
這是我的期望:例如,在“P40051”組中,Rank_ASC_1 的 Part_number == “T770”,該組中“T770”的數量為 2,類似地,Rank_DESC_1 的 Part_number == “T772”,該組中“T772”。在“Q40040”組中,Rank_ASC_1 的 Part_number 和 Rank_DESC_1 的 Part_number == “T770”,該組中 Rank_DESC_1 的 Part_number 或“T770”的數量為 1。這是我在右邊兩列預期的結果。

附上資料檔以供檢查。
回覆:條件列號計算Ah, right, I mixed up the
For each ID group
with
對於每個Part_Number團體
回覆:條件列號計算該程式碼應該可以工作:
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 ) ),
),
使用<< tie(minimum)選項,具有排名 1 Part_Number 的每一行都會獲得 Rank=1 - 這樣所有這樣的行都會被計算在內。對於這種情況,我們可以跳過計算Rank的中間步驟。
回覆:條件列號計算沒有< < ont>選項,具有相同 ID / Part_Number 的附加行將獲得增量排名。
這裡你可以使用列最小值()在所有相同 ID/Part_number 的行中複製 Rank=1 的資訊:
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>透過這種方法,可以用類似的程式碼建構<FONT face="courier new,courier">count_Rank_ASC</FONT>和<FONT face="courier new,courier">count_Rank_DESC</FONT> :</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 ))
)
)
回覆:條件列號計算在我的表中,「RANK_ASC」列已經在那裡了,我不確定它是否由 col Rank(:Part_Number, :ID) 定義。但我喜歡根據 RANK_ASC 的值(RANK_ASC==1)來找到特定的 Part_Number,然後期望適當的公式來計算該組中 Part_number 的數量。在您的公式中,我不知道如何<< tie(minimum) 與 RANK_ASC (RAN_ASC==1) 關聯。順便問一下,RANK_DESC==1 的公式是什麼?
回覆:條件列號計算這是一個選項(還有很多其他選項)
Col Sum(:Part_Number == :Part_Number[Col Min(If(:RANK_ASC == 1, Row(), .), :ID)], :ID) //change :RANK_ASC to RANK_DESC for other formula

這種使用 Col Min/Max、If() 和 Row() 的公式非常有用。
請注意,它可能會在 JMP 的任何未來版本中失效,因為這些功能不適用於這種方式。為了防止 JMP 犯下大錯,我創建了這個願望清單項,在「設定每個值」中使用公式表達式,並在「Col」統計公式支援的行為中使用表達式作為第一個參數
回覆:條件列號計算對於 RANK_DESC=1,我確信可以使用 << tie 設定一個複雜的公式。
更簡單:使用第二種方法:
https://community.jmp.com/t5/Discussions/Conditional-Column-number-calculation/mp/870429/highlight/true#M103370
如果您不喜歡/不信任<< tie()選項,請使用第二種方法。
如果表中已經存在 Rank_ASC 和 RANK_DESC,那麼這是使用第二種方法的一個很好的理由。無需自行計算列。
回覆:條件列號計算感謝您的支持,它有效回覆:條件列號計算歡迎。