条件付き列番号計算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>2 つの新しい列 PN Count of RANK_DEC =1、PN Count of RANK_ASC=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">Re: 条件付き列番号の計算</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">:Part_Number を</FONT>2 番目の引数として指定すると、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">col sum は、</FONT> rank=1 のすべての行をカウントします。<BR />ここでも、 <FONT face="courier new,courier">:Part_Number を</FONT>2番目の引数として使用しています。そのため、カウントは異なる 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: 条件付き列番号の計算不明瞭な表現で申し訳ありません。
これが私の予想です: たとえば、「P40051」グループでは、Rank_ASC_1 の Part_number == "T770" で、このグループ内の "T770" の数は 2 です。同様に、Rank_DESC_1 の Part_number == "T772" で、このグループ内の "T772" の数は 1 です。 「Q40040」グループでは、Rank_ASC_1 の Part_number と Rank_DESC_1 の Part_number == "T770" で、このグループ内の Rank_DESC_1 の Part_number の数、つまり "T770" の数は 1 です。右側の 2 列に私の予想結果を示します。

確認用のデータファイルを添付しました。
Re: 条件付き列番号の計算Ah, right, I mixed up the
For each ID group
with
それぞれPart_Numberグループ
Re: 条件付き列番号の計算このコードは動作するはずです:
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を持つすべての行のランクが1になり、そのような行がすべてカウントされます。この場合、ランクを計算する中間ステップを省略できます。
Re: 条件付き列番号の計算<がなければ< ont>オプションを選択すると、同じ ID / Part_Number を持つ追加の行のランクが増分されます。
ここで、Col min() を使用して、同じ 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">カウントランク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 ))
)
)
Re: 条件付き列番号の計算私のテーブルには「RANK_ASC」列がありますが、それが列Rank(:Part_Number, :ID)で定義されているかどうかはわかりません。しかし、RANK_ASCの値(RANK_ASC==1)に基づいて特定のPart_Numberを見つけ、適切な数式を使用してこのグループ内のPart_numberの数を計算したいと思っています。あなたの数式では、 << tie(minimum)がRANK_ASC (RAN_ASC==1)とどのように相関するかがわかりません。ところで、RANK_DESC==1の数式は何ですか?
Re: 条件付き列番号の計算ここに一つの選択肢があります(他にもたくさんの選択肢があります)
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が大きな間違いを犯さないように、Set Each Valueで数式を使用し、Col統計式の最初の引数として数式を使用する動作をサポートするようにするウィッシュリスト項目を作成しました。
Re: 条件付き列番号の計算RANK_DESC=1 の場合、<< tie を使用して複雑な数式を設定できると思います。
もっと簡単です: 2 番目のアプローチを使用します:
https://community.jmp.com/t5/Discussions/Conditional-Column-number-calculation/mp/870429/highlight/true#M103370
<< tie()オプションが気に入らない/信頼できない場合は、2 番目のアプローチを使用します。
テーブル内に既に Rank_ASC と RANK_DESC が存在する場合は、2 番目のアプローチを使用するのが妥当です。列を自分で計算する必要はありません。
Re: 条件付き列番号の計算ご支援ありがとうございます。うまくいきましたRe: 条件付き列番号の計算いらっしゃいませ。