조건부 열 번호 계산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">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> 사용하면 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> 두 번째 인수로 사용합니다. 따라서 각 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/부품 번호가 있는 추가 행에 대해 순위가 증가합니다.
여기서 Col min( )을 사용하여 동일한 ID/부품 번호의 모든 행에서 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와 같은 복잡한 공식을 설정할 수 있을 것으로 확신합니다.
훨씬 더 쉽습니다. 두 번째 방법을 사용하세요.
https://community.jmp.com/t5/Discussions/Conditional-Column-number-calculation/mp/870429/highlight/true#M103370
<< tie() 옵션이 마음에 들지 않거나 신뢰할 수 없다면 두 번째 방법을 사용하세요.
Rank_ASC와 RANK_DESC가 테이블에 이미 존재하는 경우, 두 번째 방법을 사용하는 것이 좋습니다. 열을 직접 계산할 필요는 없습니다.
Re: 조건부 열 번호 계산지원해주셔서 감사합니다. 잘 작동합니다.Re: 조건부 열 번호 계산환영.