如何在具有「取得行位置」條件的多列中使用最大值這似乎是一個簡單的問題,但我正在努力解決它......
我有這樣的數據表:

它一直持續到 64,這是我腳本中的參數“dim”。
我正在尋找所有 Median_range_mm 1, 2 , 3 ... 直到 64 的最大值和最小值。 但我不希望 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 )]
知道「獲取行在哪裡」或「列最大()」如何運作嗎?
謝謝
回覆:如何在具有「取得行位置」條件的多列中使用 max@tx尼爾森
@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>在偵錯視窗中,我認為“name”和“nom”的類型很重要。 它不是列類型...</P><P> </P><P>這個想法是“name”是列“target_status 2”然後是3然後4......在p上迭代。</P><P>與「nom」相同的想法,即「median_range_mm 2」列,然後 3 然後 4 ....</P><P>因此,對於 p = 2,我正在尋找median_range_mm 2 的最大值,其中「target_status 2」== 5 或 9。</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
);
謝謝閱讀,
回覆:如何在具有「取得行位置」條件的多列中使用 max我認為這可能是您嘗試做的事情的解決方案
min_value = Col Quantile( If( Row() <=64 & ( :target_status == 5 |
:target_status == 9 ),
:median_range_mm
,
.
), .5<BR />);回覆:如何在具有「取得行位置」條件的多列中使用 max@Rob128 ,
我很難理解你到底想要什麼?讓我嘗試向您展示一些步驟:
下面應該為您提供所有行,其中 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 );
我很確定還有很多方法可以做到這一點,但我正在嘗試將其分解為步驟,以便您可以遵循這個想法。 如果這不是您所追求的,您能否更清楚地解釋一下您所追求的是什麼?