如何从列中获取与所选标签相对应的非空行值?我有附件表格的传入数据。
我想从每列(红色圆圈)中获取前三行值,这些值出现在特定标签上。
以下适用于电流,但不适用于电压(对于电压,我得到空值,我明白为什么)
Stage = "7"; resCol = "Current";
theLSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]]; show (theLSL);
theUSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "USL" ))[1]]; show (theUSL);

自动化和脚本编写视窗回复:如何从列中获取与所选标签相对应的非空行值?您可以使用 IsMissing() 添加额外的检查
... & !IsMissing(Column(dt, resCol)[])
回复:如何从列中获取与所选标签相对应的非空行值?@jthi谢谢。
回复:如何从列中获取与所选标签相对应的非空行值?这是您的 << get rows where 的又一个搜索条件
dt << get rows where(:TestStage == Stage & :label == "USL" & !Is Missing(Column(dt, resCol)[]))
回复:如何从列中获取与所选标签相对应的非空行值?编写的 JSL 仅返回第一个匹配行的值。尽管
dt << get rows where( :TestStage == Stage & :label == "LSL" )
返回找到的所有匹配行的矩阵,当添加[1]的下标时
(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]
它返回找到的第一行的行号,在您的示例中,它返回缺失值。
@jthi Jarmo,建议添加进一步的说明以消除缺失值,这会将您的 Get RowsWhere() 更改为
(dt << get rows where( :TestStage == Stage & :label == "LSL" & !IsMissing(Column(dt, resCol) ) )[1]
如果您只是寻找第一个非缺失值,那么这是一个很好的解决方案。但是,如果您的数据可能包含多行非缺失 LSL 值,那么您可能不希望找到第一个非缺失值。您可能想要执行一些操作,例如从返回的所有非缺失行中查找最大 USL 值或平均 USL 值。你可以做类似的事情
theUSL = dt << get rows where( :TestStage == Stage & :label == "LSL" & !Is Missing( Column( dt, resCol ) ) );
USLMat = [];
For Each( {foundRow, index}, theUSL, USLMat = USLMat || Column( dt, resCol )[index] );
theUSL = Mean( USLMat );
回复:如何从列中获取与所选标签相对应的非空行值?我正在尝试做同样的事情,就我而言
dt << Get Rows Where(:A == "AAA")
给出一个包含一个元素的列表.
所以我必须使用
:B[(dt << Get Rows Where(:A == "AAA"))[1]]
回复:如何从列中获取与所选标签相对应的非空行值?@miguello ,有问题吗?
回复:如何从列中获取与所选标签相对应的非空行值?我想不是。我只是想了解哪种行为是正确的,以及为什么我和@Neo 的做法是这样的,而你们的做法是另一种?
它取决于它是否给出矩阵或带有矩阵的单个元素列表?
回复:如何从列中获取与所选标签相对应的非空行值?如果您从 Get Rows Where() 调用仅返回 1 行,则没有任何有意义的区别。