如何在具有“获取行位置”条件的多列中使用最大值这似乎是一个简单的问题,但我正在努力解决它......
我有这样的数据表:

它一直持续到 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 );
我很确定还有很多方法可以做到这一点,但我正在尝试将其分解为步骤,以便您可以遵循这个想法。 如果这不是您所追求的,您能否更清楚地解释一下您所追求的是什么?