"get rows where" 조건으로 여러 열에서 최대값을 사용하는 방법쉬운 질문인 것 같지만 풀기가 어렵네요...
이런 종류의 데이터 테이블이 있습니다.

내 스크립트의 "dim" 매개변수인 64까지 갑니다.
64까지 모든 median_range_mm 1, 2, 3 ...의 최대값과 최소값을 찾고 있습니다. 하지만 저는 JMP가 target_status가 5 또는 9와 다른 행을 보는 것을 원하지 않습니다.
보시다시피 대상 상태가 10일 때 39996에서 범위를 초과합니다.
내 코드로 이해하기 쉽습니다.
maxValueVar = 0 ;
maxValue = Max( :median_range_mm [dt << get rows where( :target_status == 5 | :target_status == 9 ) ] );
minValue = Min( :median_range_mm[dt << get rows where( :target_status == 5 | :target_status == 9 )] );
For( p = 2, p <= dim, p++,
name = Column(dt, "target_status " || Char( p ));
nom = Column(dt, "median_range_mm " || Char( p )); // browse every columns of median_range_mm
MaxValueVar = Col Max( nom [dt << get rows where ( name == 5 | name == 9 )] );
If(
maxValueVar > maxValue, maxValue = maxValueVar,
minValueVar < minValue, minValue = minValueVar
);
);
매개변수를 지정하지 않은 첫 번째 열에 대해 작동합니다. 또한 내가 댓글을 달면 작동합니다
[dt << get rows where ( name == 5 | name == 9 )]
"get rows where" 또는 "column max()"가 어떻게 작동하는지 아십니까?
감사해요
Re: "get rows where" 조건으로 여러 열에서 최대값을 사용하는 방법@txnelson
@uday_guntupalli
답변해 주셔서 감사합니다. 내 문제를 실제로 설명하는 데 충분히 명확하지 않았을 수 있습니다.
주요 차단 지점은 코드를 사용하여 "target_status" 열의 필터를 사용하여 "median_range_mm" 열의 최대값을 얻을 수 있다는 것입니다.
maxValue = Max( :median_range_mm [dt << get rows where( :target_status == 5 | :target_status == 9 ) ] ); // ==> OK
minValue = Min( :median_range_mm[dt << get rows where( :target_status == 5 | :target_status == 9 )] ); // ==> OK
그러나 일단 열을 반복하면 :
For( p = 2, p <= dim, p++,
name = Column("target_status " || Char( p ));
nom = Column("median_range_mm " || Char( p ));
MaxValueVar = Max( nom [dt << get rows where ( name == 5 | name == 9 )] );</CODE></PRE><P>MaxValueVar 및 MinValueVar는 "." 데이터를 가져오지 않습니다. (그런 것 같아요<SPAN> 숫자 열에 대한 누락된 값 문자)</SPAN> .</P><P>디버깅 창에서 "이름"과 "놈"의 유형이 중요하다고 생각합니다. 컬럼타입이 아니라..</P><P> </P><P>아이디어는 "name"이 "target_status 2", 3, 4 ... p에서 반복되는 열이라는 것입니다.</P><P>열 "median_range_mm 2", 3, 4 ...인 "nom"과 동일한 아이디어입니다.</P><P>따라서 p = 2의 경우 "target_status 2" == 5 또는 9인 median_range_mm 2의 최대값을 찾고 있습니다.</P><P>그러면 p = 3 ... 64까지</P><P> </P><P>마지막으로 "median_range_3의 최대값" > "median_range_2의 최대값"인 경우 "median_range_3의 최대값은 maxValue를 사용합니다.</P><PRE><CODE class=" language-jsl">If(
MaxValueVar > maxValue, maxValue = MaxValueVar,
MinValueVar < minValue, minValue = MinValueVar
);
읽어 주셔서 감사합니다,
Re: "get rows where" 조건으로 여러 열에서 최대값을 사용하는 방법나는 이것이 당신이하려는 일에 대한 해결책이라고 생각합니다
min_value = Col Quantile( If( Row() <=64 & ( :target_status == 5 |
:target_status == 9 ),
:median_range_mm
,
.
), .5<BR />);Re: "get rows where" 조건으로 여러 열에서 최대값을 사용하는 방법@롭128 ,
나는 당신이 원하는 것을 정확히 이해하기 위해 애쓰고 있습니까?몇 가지 단계를 시도해 보겠습니다.
다음은 시도한 것처럼 target_status가 5 또는 9인 모든 행을 제공해야 합니다.
SR = dt << Select Where(:target_status ==5 | :target_status ==9) << get selected rows;
이제 조건이 충족되는 행 목록이 있습니다. 질문을 이해하면 다음으로 원하는 것은 최소값과 최대값입니까?
MedianValues = dt:median_range_mm << Get Values;
MedianValuesDes = MedianValues[SR]; // Filter out and get only the rows with target status of 5 or 9
MaxVal = Max(MedianValuesDes );
MinVal = Min(MedianValuesDes );
더 많은 방법이 있다고 확신하지만 생각을 따라갈 수 있도록 단계로 나누려고 합니다. 이것이 당신이 추구하는 것이 아니라면, 당신이 추구하는 것이 무엇인지 좀 더 명확하게 설명해 주시겠습니까?